如何在Django中检查用户是否为超级用户?

9

我正在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”。有什么想法吗?


尝试在“非超级用户”后移除{{ obj.is_superuser }}。 - Ankit Tiwari
不改变。无论如何,我只是打印它以供参考。 - Tech
如果打印出false,那就意味着没有超级用户,或者你的代码中可能缺少某些东西。因为它对我来说是可以工作的。 - Ankit Tiwari
“管理员面板”对超级用户的价值有何评价? - mansuetus
在管理员面板中,超级用户框已被勾选。 - Tech
也许问题在你的代码中,我认为。 - Ankit Tiwari
2个回答

18

这是我的views.py文件,用于显示当前用户账户

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

1

我在我的代码中尝试了一下,它可以工作,也许是你的数据有问题,这是我的代码样子

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接