2011-06-23 52 views
0

我開始使用Django,並且在服務器端代碼時只是一個新手。我所有的網頁編碼經驗都在前端,僅限於CSS,HTML和基本的JavaScript。但我認爲是時候把它提高一些,並且更多地瞭解事物的後端,並決定從這裏開始。我成功通過了Django的入門應用指南。我沒有試圖在應用程序中添加擴展程序和「湯」。需要幫助獲得身份驗證才能在Django項目中的所有應用程序中工作

我安裝了allauth進行註冊/用戶管理。我能夠設置併成功註冊,登錄,註銷默認模板。

然而,當我加載了投票應用程序,它是在同一個項目中,它似乎並沒有工作...

代碼中的index.html(下模板/民意調查顯示/)下投票應用程序不起作用。

{% if user.is_authenticated %} 
    <b>ALL GOOD</b> 
{% else %} 
    <b>Go sign-in first.</b> 
{% endif %} 

代碼在sign-up.html(在templates/account /下找到)下的帳戶下工作。

{% if user.is_authenticated %} 
    Good work 
{% else %} 
    Fail 
{% endif %} 

我是否在某處丟失了導入語句?爲什麼它在一個模板文件夾中工作,但不是另一個?

在此先感謝!

+0

你會得到什麼錯誤信息?您是否使用通用視圖來呈現投票的索引頁? – miku

回答

0

沒有更多的信息很難說,但我最初的反應是,你可能不會將用戶變量傳遞給視圖函數中的模板上下文。

即:

def view(request): 
    t = loader.get_template('index.html') 
    c = Context({"user": request.user}) 
    return HttpResponse(t.render(c)) 
1

嘗試request.user.is_authenticated代替。

1

如果使用RequestContext(request),你必須在你的TEMPLATE_CONTEXT_PROCESSORSuser變量django.contrib.auth.context_processors.auth將在你的模板訪問。

https://docs.djangoproject.com/en/dev/ref/templates/api/#django-contrib-auth-context-processors-auth

我認爲,在我的腦海更有意義。

RequestContextfrom django.template import RequestContext,當你

render_to_response("mytemplate.html", 
    RequestContext(request, {"other_variable": other_value, "more": True})) 

template.render(RequestContext(request, {"other_variable": other_value, "more": True})) 

簡而言之:您可以訪問一組變量,而無需指定它們。


編輯: -

我剛剛發現你可以使用from django.views.generic.simple import direct_to_template代替render_to_response

direct_to_template(request, "mytemplate.html", {"other_variable": other_value, "more": True}) 

它做一樣的render_to_response線上面我給了。

相關問題