2010-03-07 40 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