Django登录/注销
问题描述:
我试图用django创建一个登录和注销页面。我遇到的问题是,当我提交表单时,它不会显示我指定的网址。当我点击登录按钮时,我想要它去http://127.0.0.1:8000/home/,但是,它会去http://127.0.0.1:8000/?next=/home/。Django登录/注销
下面是我的view.py我的登录/注销代码:
def login(request):
def errorHandler(error):
return render_to_response('login.html', {'error' : error})
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username = username, password = password)
if user is not None:
if user.is_active:
authLogin(request, user)
fullName = user.get_full_name
return render_to_response('logged_in.html', {'full_name': fullName})
else:
error = 'Account disabled.'
return errorHandler(error)
else:
error = 'Invalid details entered.'
return errorHandler(error)
return render_to_response('login.html')
@login_required
def logout(request):
authLogout(request)
return render_to_response('logged_in.html')
我的login.html:
{% extends "base.html" %}
{% block content %}
{% if error %}
<p><b><font color="red">Error: </font></b>{{ error }}</p>
{% endif %}
<form action="/home/" method="post">
<label for="username">User name:</label>
<input type="text" name="username" value="" id="username">
<label for="password">Password:</label>
<input type="password" name="password" value="" id="password">
<input type="submit" value="Login" />
<input type="hidden" name="next" value="{{ next|escape }}" />
</form>
{% endblock %}
我logged_in.html:
{% extends "base.html" %}
{% block name %}{{ full_name }} is {% endblock %}
{% block content %}
<p><a href='/'>Logout</a></p>
{% endblock %}
网址:
(r'^$', 'myapp.views.login'),
(r'^home/$', 'myapp.views.logout'),
请帮
答
的问题是,你不实际登录用户,形式发送未经验证的用户/home/
,无法处理,因为它需要登录。 :-)因此,它将用户重定向到登录视图,将参数的目标存储在next
中。
解决方案: <form action="" method="post">
答
也许你应该尝试删除隐藏的输入与NAME =“下一步” http://docs.djangoproject.com/en/1.2/topics/auth/#django.contrib.auth.views.login
+0
不工作,网址仍然重定向到http://127.0.0.1:8000/?next=/home/ – tester 2011-05-16 08:50:57
工程。但是,由于它仍然是http://127.0.0.1:8000(不更改URL),因此它实际上不使用注销视图。它只是去那个页面。 (注销视图设置为/ home /) – tester 2011-05-16 09:01:06
'LOGIN_REDIRECT_URL ='/ home /''settings.py – DrTyrsa 2011-05-16 09:04:32
我以前试过,但url仍然是127.0.0.1:8000。我必须在我的视图中指定重定向网址吗?或者它可能与render_to_response有关?我试过HttpResponseRedirect,但是我需要传递给模板的内容,就像你可以在我的代码中看到的那样。 – tester 2011-05-16 09:09:43