我创建了一个django应用程序。它已在同一registrationForm.html上获得用户登录/注册。登录功能现在正常工作。一旦用户提供了正确的用户名(此处是电子邮件ID)和密码,用户就会被重定向到另一个页面(logedIn.html),显示“用户登录”消息,当用户无效(用户名或密码错误)时,页面再次呈现到该页面(registrationForm.html)。现在我想在该页面上显示“检查您的用户名或密码”的消息。作为一个django新手,我无法做到这一点。有人可以帮忙做到这一点。我会在这里粘贴我的代码。
views.py
def registrationForm(request):
if request.method == "POST":
firstName = request.POST.get("firstName")
lastName = request.POST.get("lastName")
email = request.POST.get("email")
password = request.POST.get("password")
sex = request.POST.get("sex")
birthday = request.POST.get("birthday")
print request.POST.get("sex")
UniversityDetails(firstName=firstName,lastName=lastName,email=email,password=password,sex=sex,birthday=birthday).save()
return render_to_response('registrationForm.html')
return render_to_response("registrationForm.html")
def login(request):
if request.POST:
email=request.POST.get("username")
password = request.POST.get("password")
user = UniversityDetails.objects.filter(email=email,password=password)
if(not user):
return render_to_response("registrationForm.html")
else:
return render_to_response("logedIn.html")
HTML
<div align="center">
<form name="userInputForm" method="POST" id="myFormid" action="http://10.1.0.90:8080/login/">
<div style="float:left;width:100%;">
<p style="float:left;margin-right:10px;width:auto;"><label style="float:left;">Email id</label><br/> <input type="text" name="username" size="25" /></p>
<p style="float:left;margin-right:10px;width:auto;"><label style="float:left;">Password</label><br/><input type="password" name="password" size="25" /></p>
</div>
<p style="clear:both;float:left;"><input type="submit" value="Log in" /></p>
</div>
</form>
答案 0 :(得分:3)
您的工作方式存在很多问题 - 例如存储明文密码 - 请查看django可用的内置身份验证后端,了解如何正确登录用户。附加的好处包括用户可自动使用request.user http://docs.djangoproject.com/en/dev/topics/auth/
但我确实理解django一步一步学习。给定您的代码,只需将一个变量添加到模板的上下文中,即失败时呈现。
def login(request):
if request.POST:
email=request.POST.get("username")
password = request.POST.get("password")
user = UniversityDetails.objects.filter(email=email,password=password)
if(not user):
return render_to_response("registrationForm.html",
{'invalid': True }) # our template can detect this variable
else:
return render_to_response("logedIn.html")
{% if invalid %}
Your email/password combo doesn't exist.
{% endif %}
答案 1 :(得分:2)
我强烈建议你使用Django的built-in user authentication system。您可以为每个用户store additional user information,它将为您完成大部分工作(包括加密密码和用户权限)。
如果无法做到这一点,那么请考虑使用forms来收集和验证用户数据 - 它比自己做得更干净,更容易。
最后,我建议您浏览tutorial,了解如何在模板中使用变量。
我知道需要一段时间才能熟悉Django如何做事(上帝知道它花了我足够长的时间),但坚持在那里:)。