我有一个自定义的Django登录页面。当用户名或密码字段为空时,我想引发异常。我该怎么做?
My view.py登录方法:
def user_login(request):
context = RequestContext(request)
if request.method == 'POST':
# Gather the username and password provided by the user.
# This information is obtained from the login form.
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
print("auth",str(authenticate(username=username, password=password)))
if user:
# Is the account active? It could have been disabled.
if user.is_active:
login(request, user)
return HttpResponseRedirect('/')
else:
return HttpResponse("xxx.")
else:
# Bad login details were provided. So we can't log the user in.
print ("Invalid login details: {0}, {1}".format(username, password))
return HttpResponse("Invalid login details supplied.")
else:
return render_to_response('user/profile.html', {}, context)
我试过但没用: 这是forms.py
def clean_username(self):
username = self.cleaned_data.get('username')
if not username:
raise forms.ValidationError('username does not exist.')
您可以使用Django提供的login视图。因此login.html应该类似于这个示例。
记住url.py!
正确的方法是使用forms,而不是直接从
request.POST
获取变量。然后Django将验证表单数据,并在模板中呈现表单时显示错误。如果表单字段是必需的,那么Django将在该字段为空时自动显示错误,您甚至不需要为此编写clean_<field_name>
方法。Django已经有一个built in login view。最简单的方法是使用这个,而不是自己写。如果您仍然想编写自己的视图,那么您仍然会发现查看Django是如何做到的非常有用。
相关问题 更多 >
编程相关推荐