我想允許用戶在默認情況下要到他們的用戶頁面(如:mywebsite.com/userpage)時,他們使用的登錄表單。Django的 - 多次登錄重定向
此外,如果他們去網站上的其他一些受密碼保護的頁面重定向到登錄頁面,第一,一旦被認證讓他們回到他們試圖訪問原來的頁面。
這是我迄今爲止的登錄功能:
views.py
def user_login(request):
if request.method == 'POST':
form = AuthenticationForm(request.POST)
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a successpage
if request.POST['next']:
return HttpResponseRedirect(request.POST['next'])
else:
return HttpResponseRedirect("/" + username + "/")
else:
errors = 'This account has been disabeled.'
else:
# Return an 'invalid login' error message.
errors = 'There is a problem with the user name and/or the password. Please try again.'
else:
form = AuthenticationForm()
return render_to_response("registration/my_login.html", locals(), context_instance=RequestContext(request))
urls.py
urlpatterns = patterns('',
url(r'^login/$', user_login,),
my_login.html
<form action="." method="post" >{% csrf_token %}
{{errors}}
{{ form.as_p }}
<p class="submit"><button type="submit" name="login_user_button" value="Login">Log in</button></p>
<input type="hidden" name="next" value="{{ next }}">
</form>
我的問題是,我不知道如何獲得「下一個」變量的值,所以我可以在我的user_login
函數中使用它來進行重定向。
正如你可以看到我試着用request.POST['next']
得到它,但配備了一個空字符串,因爲某些原因沒有價值得到簽署的「下一個」變量。
任何想法?
Hi @avatar,檢查是否在views.py下一個參數來自POST或GET。也許你應該通過GET ['next']來替換POST ['next'] – danihp
我只是看着生成的HTML頁面上的源代碼,下一個輸入字段如下所示:。因此,即使指向登錄頁面的網頁鏈接具有下一個值(即http://mywebsite.com/accounts/login/?next=/messages/),{{next}}也不會捕獲下一個值)。 – avatar