user.is_authenticated 在用户列表中

user.is_authenticated in Users List

尽管进行了多次搜索,但我还没有找到解决问题的方法:经过身份验证的用户的内容未显示在显示用户列表的视图中。

我的应用有一个显示用户列表的视图:

views.py

def UserListView(request):
    user = User.objects.all().order_by('-date_joined')
    return render(request, 'accounts/user_list.html', {"user": user})

带有此导航栏的基本模板:

base.html

<nav class="navbar">
  <ul>
    {% if user.is_authenticated %}
      <li><a class="nav-item" href={% url 'logout' %}>Logout</a></li>
    {% else %}
      <li><a class="nav-item" href={% url 'login' %}>Login</a></li>
    {% endif %}
  </ul>
</nav>

即使用户已登录,菜单也会显示登录而不是注销。 我怀疑上下文有问题? 欢迎任何建议:)

视图中的变量 user 与身份验证上下文处理器中的 user 发生冲突。由于视图中的变量是一个查询集,它没有 is_authenicated 属性,因此 {% if user.is_authenticated %} 总是计算为 False.

由于该视图显示的是多个用户的列表,因此最好将其重命名为users

def user_list_view(request):
    users = User.objects.all().order_by('-date_joined')
    return render(request, 'accounts/user_list.html', {"users": users})

然后您需要更改 accounts/user_list.html 模板中的循环,例如:

{% for u in users %}
  {{ u.username }}
{% endfor %}