在django模板中对user.u进行身份验证时遇到问题
对不起,如果我之前问你这个问题时你想帮我。我不得不删除那个问题,因为出于某种原因,我不能编辑其他信息 我正在django网站上实现用户身份验证。一切正常。我的视图、模型、URL等都已设置。用户可以注册、登录、注销。我遇到的问题是这段代码:在django模板中对user.u进行身份验证时遇到问题,django,authentication,Django,Authentication,对不起,如果我之前问你这个问题时你想帮我。我不得不删除那个问题,因为出于某种原因,我不能编辑其他信息 我正在django网站上实现用户身份验证。一切正常。我的视图、模型、URL等都已设置。用户可以注册、登录、注销。我遇到的问题是这段代码: {% if request.user.is_authenticated %} <li><a href="/logout">Log Out</a></li> {% else %}
{% if request.user.is_authenticated %}
<li><a href="/logout">Log Out</a></li>
{% else %}
<li><a href="/login">Log In</a></li>
{% endif %}
如果启用了身份验证上下文处理器,则
user
已在模板上下文中,您可以执行以下操作:
{% if user.is_authenticated %}
如果要访问模板中的请求
,请确保已启用
在您的问题中,您使用的是
render\u to\u response
。自Django 1.3以来,最好使用render
而不是render\u to\u response
。使用render\u to\u response
和RequestContext(request)
在Django中工作请注意,由于Django1.10对进行了身份验证
用@属性修饰并且其行为不同
对于未经身份验证的用户调用{{user.is_authenticated}结果:
CallableBool(True)
(在Django<1.10上时为True
)
对于已验证的用户调用{{user.is_AUTHENTICATED}结果:
CallableBool(False)
(在Django<1.10上时为False
)
如果您需要将例如传递给javascript值,如true
或false
,您可以通过应用过滤器| yesno:“true,false”
var DJANGO_USER=“{{USER.is_authenticated}yesno:“true,false”}”;
我的模板上下文处理器是(“django.contrib.auth.context\u processors.auth”、“django.core.context\u processors.debug”、“django.core.context\u processors.i18n”、“django.core.context\u processors.media”、“django.core.context\u processors.static”、“django.core.context\u processors.tz”、“django.contrib.messages.context\u processors.messages”)请求一的路径是什么?哦,我没意识到我把request.user.is_验证在那里了。我尝试添加它,因为我认为它会有帮助,但没有。模板在有或没有“请求”的情况下都无法工作。因此,对于无法正确显示注销链接的视图,请确保使用RequestContext
呈现模板调试工具栏对于解决此类问题非常有用,因为它可以向您显示模板上下文。是的!就这样!非常感谢你!
{% if user.is_authenticated %}
return render(request, 'template/login.html', context)
<script language="javascript">
var DJANGO_USER = "{{user.is_authenticated|yesno:"true,false"}}";
</script>