django-registration的额外上下文

时间:2012-08-29 13:39:17

标签: django django-registration

我正在使用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但我迷失了我真正需要做的事情。请帮忙!!

3 个答案:

答案 0 :(得分:1)

通过将django.core.context_processors.request添加到TEMPLATE_CONTEXT_PROCESSORS(默认情况下出现),您应该在模板上添加request个实例。您可以然后通过输入以下内容来访问模板上的用户(可能是经过身份验证的UserAnonymousUser,而不是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,我需要在我的设置中手动添加它们