0

我正在使用 django-registration 但我有问题。我想获取用户的登录状态并将其传递给我项目中的所有 html 页面。我通常只是像这样在我的views.py中声明它

logged_in =request.user.is_authenticated() # get login status

然后将其作为上下文传递给相应的 html。现在正在使用 django-registration,我需要传递logged_in给 django-registration 呈现的所有 html,但不知道该怎么做。我试图不修改 django-registration 代码。我有一种感觉,我需要 context_processors,但我不知道我在这里真正需要做什么。请帮忙 !!

4

3 回答 3

1

通过添加django.core.context_processors.request到您的TEMPLATE_CONTEXT_PROCESSORS(默认情况下),您应该request在模板上有一个实例。然后,您可以通过键入以下内容访问模板上的用户(可能是经过身份验证User的或AnonymousUser, never ):None

{% if request.user.is_authenticated %}
于 2012-08-29T17:38:31.547 回答
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,我需要在我的设置中手动添加它们

于 2012-08-30T10:19:35.097 回答
0

请求对象本身可以在 html 页面上访问

最好在 base.html 文件中使用它来访问所有页面,例如

  {% if request.user.is_authenticated %}   
于 2012-08-29T13:53:04.020 回答