我正在使用django-registration,但我遇到了问题。 我想获取用户的登录状态并将其传递给我项目中的所有html页面。我通常只是在我的views.py中声明它
logged_in =request.user.is_authenticated() # get login status
然后将其作为上下文传递给相应的htmls。现在我正在使用django-registration,我需要将logged_in
传递给django-registation呈现的所有html,但我不知道如何做到这一点。我试图不修改django注册码。我有一种感觉,我需要context_processors但我迷失了我真正需要做的事情。请帮忙!!
答案 0 :(得分:1)
通过将django.core.context_processors.request
添加到TEMPLATE_CONTEXT_PROCESSORS
(默认情况下出现),您应该在模板上添加request
个实例。您可以然后通过输入以下内容来访问模板上的用户(可能是经过身份验证的User
或AnonymousUser
,而不是None
):
{% if request.user.is_authenticated %}
答案 1 :(得分:0)
请求对象本身可以在html页面上访问
最好在base.html文件中使用它,以便在所有页面上访问它,例如
{% if request.user.is_authenticated %}
答案 2 :(得分:0)
使用django 1.4并且显然request
不是默认上下文。或者因为它是我默认无法访问request
所以我将其添加到我的settings.py
并且它对我有用
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request",)
当然在我的情况下我只需要"django.core.context_processors.request"
,但由于我要覆盖default context processors
,我需要在我的设置中手动添加它们