尽管进行了很多搜索,我还没有找到解决问题的方法:经过身份验证的用户的内容不会显示在显示用户列表的视图上。
我的应用有一个显示用户列表的视图:
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>
即使用户已登录,菜单也会显示“登录”而不是“注销”。 我怀疑上下文的问题? 欢迎任何建议:)
答案 0 :(得分:2)
视图中的变量user
与auth上下文处理器中的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 %}