2012-08-29 73 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,我需要在我的設置中手動添加它們