2010-03-07 64 views
1

在我base.html登錄我放在這個:實現在Django

{% if user.is_authenticated %} 
you are logged in! 
{% else %} 
<h3>Login</h3> 
<form action="/login/" method="post" accept-charset="utf-8"> 
<label for="username">Username</label><input type="text" name="username" value="" id="username" /> 
<label for="password">Password</label><input type="password" name="password" value="" id="password" /> 
<p><input type="submit" value="Login →"></p> 
</form> 
{% endif %} 

urls.py

(r'^login/$', 'django.contrib.auth.views.login'), 
(r'^logout/$', 'django.contrib.auth.views.logout'), 

當我訪問/login我不得不做出一個login.html文件。我創建templates/registration/login.html

{% extends "base.html" %} 

{% block content %} 

{% if form.errors %} 
<p>Your username/pass didnt match</p> 
{% endif %} 

{% endblock %} 

我沒有看到用戶名/密碼,但我還是看到了我的意思用戶還沒有通過認證。

順便說一句,我沒有加載CSRF中間件。我有沒有錯過一兩步?

另一件事,我訪問logout.html,它進入我的django管理員註銷頁面。我嘗試製作一個templates/registration/logout.html,但它沒有覆蓋該部分。人力資源管理?

回答

0

Doh。顯然我的實際模板有action="/login",但是當我在這裏的例子中鍵入它時,它有一個結束斜線,我重新添加了斜線,就是這樣。

2

您是否將user變量傳遞給您的模板上下文?無論是明確的,還是通過上下文處理器?

+0

我沒有明確地傳遞'user'變量,但我沒有得到任何警告,沒有'用戶'對象,所以我認爲它正在通過一些手段。 – 2010-03-07 17:54:55

+1

如果模板不存在,Django模板不會發出警告,它們只是默默地失敗。所以,如果你沒有通過它(或者,正如我所說,使用上下文處理器),它不在那裏。嘗試輸出「{{user}}」的值來確認。 – 2010-03-07 18:18:01

+0

說'AnonymousUser' – 2010-03-08 07:20:45