[英]Django login/logout
我正在嘗試使用django創建登錄和注銷頁面。 我遇到的問題是,當我提交表單時,它不會是我指定的URL。 當我點擊登錄按鈕時,我希望它轉到http://127.0.0.1:8000/home/ ,而是轉到http://127.0.0.1:8000/?next=/home/ 。
以下是我的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">
也許你應該嘗試刪除名為=“next”的隱藏輸入http://docs.djangoproject.com/en/1.2/topics/auth/#django.contrib.auth.views.login
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.