如何检查用户是否是 django 中的超级用户

问题描述 投票:0回答:2

我在

ListView
页面上列出注册用户,并且我试图显示用户是否是超级用户。

我的主用户是使用

python manage.py createsuperuser
命令创建的,我确信它是超级用户,因为我也从管理面板检查过。

当我尝试打印是否是超级用户时,我的代码总是显示

False
输出。这是我的代码:

views.py

@method_decorator(staff_member_required, name='dispatch')
class Uyeler(ListView):
    model = User
    paginate_by = 40
    ordering = ['-pk']
    template_name = "panel/uyeler.html"

在模板文件中:

{% for obj in object_list %} 
  {% if obj.is_superuser %}
    SuperUser 
  {% else %}
    Not SuperUser {{ obj.is_superuser }}
  {% endif %}
    
{% endfor %}

对于包括我的超级用户帐户在内的所有用户,我的 html 输出都是“Not SuperUser False”。有什么想法吗?

python django django-views django-users
2个回答
21
投票

这是我的

views.py
,用于显示当前用户帐户

@login_required
def account(request):
    if request.user.is_superuser: # just using request.user attributes
        accounts = get_user_model().objects.all()```

2
投票

我在我的代码中尝试过,它正在工作,也许您的数据存在问题,这就是我的代码的样子

views.py

def user_detail(request):
  user_detail = CustomUser.objects.filter(id=id)
  return(request, 'user_datail.html', {'user_detail': user_detail})

user_datail.html

{% for i in user_detail %}
  {% if i.is_superuser %}
     <td class="text-center"><span class="btn btn-success">You</span> 
     </td>
  {% else %}
    <td class="text-center"><span class="btn btn-info">Agent</span> 
    </td>
  {% endif %}
{% endfor %}

输出

view image

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.