2012-08-29 68 views
0

额外的上下文正在使用Django的注册,但我有一个问题。 我想获得用户的登录状态,并把它传递给我的项目中所有的HTML页面。我通常只是宣布它在我的views.py这样Django的注册

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

,然后把它作为一个上下文对应的HTMLS。现在使用Django登记和我需要传递logged_in由Django的registation呈现的所有HTMLS但我不知道如何做到这一点。我正在尝试不修改django注册码。我有一种感觉,我需要context_processors,但是我失去了我真正需要在这里做的事情。请帮助 !!

+0

请求对象可以在html文件中访问,所以{%if request.user.is_authenticated%} ... {%endif%}将起作用 – karthikr

+0

@karthikr是的,但问题在于请求不是django注册中的上下文的一部分。我如何添加这个额外的上下文?帮助 – flexxxit

+0

好吧,request_context会有请求对象。使用哪个应用程序并不重要。在HTML中,您不必为访问请求对象做任何事情。一个普通的{{request}}会让你访问它。 – karthikr

回答

0

请求对象本身是对html页面访问

更好地使用你的base.html文件的文件进行访问的所有页面,如

{% if request.user.is_authenticated %} 
+0

谢谢,但事情是,Django的注册不包括'request'作为上下文的一部分。那么如何将它添加为额外的上下文? – flexxxit

+0

@YehonathanQuartey karthikkr是正确的上下文有请求对象首先尝试它会工作 – user1614526

1

通过添加django.core.context_processors.requestTEMPLATE_CONTEXT_PROCESSORS(其自带默认情况下),你应该对模板的request实例。您可以然后访问权限的用户通过输入(可以通过身份验证的UserAnonymousUser,从来没有None)在您的模板:

{% if request.user.is_authenticated %} 
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,我需要在我的设置中手动添加它们