我創建了一個用戶登錄頁面,它工作的很棒!但是當用戶輸入錯誤的憑證時,如何在登錄頁面上顯示錯誤?我嘗試了一個if和一個變量,但是不管怎麼樣都導致了錯誤的顯示。在登錄表單中顯示錯誤
在我的意見,我已經設置了「ERROR_MESSAGE」變量,像這樣:
def LoginView(request):
error_message = ''
logout(request)
context = RequestContext(request)
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect("/")
else:
# Return a 'disabled account' error message
return HttpResponseRedirect("/")
else:
# Return an 'invalid login' error message
---> error_message = "Incorrect username or password."
return render(request, 'profile/login.html', {'error_message': error_message}, context)
然而,在我的模板,這個變量將顯示不管是什麼,即使我設置裏面的變量「如果「聲明。
這裏是我的模板:
{% include '__header.html' %}
<style>
main {
width: 920px;
background: none;
margin-top: calc(50vh - 280px)
}
</style>
<div class="form-container">
<form id="user" method="post" action="/login/"
enctype="multipart/form-data" class="text">
{% csrf_token %}
<div class="title">Login to your account</div>
<div class="form-col">
<div class="field-container">
<div class="field-input-container">
<div class="field-label">Username</div>
<div class="field-input">
<input class="field-input-element" type="text" name="username"/>
</div>
</div>
<div class="field-help"></div>
</div>
</div>
<div class="form-col">
<div class="field-container" style="height: 110px">
<div class="field-input-container">
<div class="field-label">Password</div>
<div class="field-input">
<input class="field-input-element" type="password" name="password"/>
</div>
</div>
<div class="field-error">{{ error_message }}</div>
<div class="field-help"></div>
</div>
</div>
<div class="form-button-container">
<input type="submit" name="submit" value="Login" class="button form-button"/>
</div>
</form>
</div>
{% include '__footer.html' %}
那麼,怎樣才能在我只有在出現了一個錯誤的模板顯示錯誤信息?基於
更新代碼關閉答案(仍然沒有同樣的事情)
def LoginView(request):
template_name='profile/login.html'
logout(request)
context = RequestContext(request)
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect("/")
else:
# Return a 'disabled account' error message
return HttpResponseRedirect("/")
else:
# Return an 'invalid login' error message
error_message = "Incorrect username or password."
else:
error_message = ''
return render(request, 'profile/login.html', {'error_message': error_message}, context)
爲什麼不使用[登錄視圖](https://docs.djangoproject.com/en/1.9/topics/auth/default/#django.contrib.auth.views.login)? – Sayse
我想要更多地控制視圖的實際功能,而且這個功能完美。當這個工作正常的時候,我不會試着去做其他事情。 –
爲什麼它的價值,真的沒有太多的需要做的使用Django之一,我提供的鏈接甚至給你一個示例模板 – Sayse