这里Django表单验证错误的形式无法显示同一页
class LoginForm(forms.Form):
email = forms.EmailField(
label=("Email"),
widget=forms.TextInput(attrs={
'id': 'inputEmail',
'class': 'form-control inp',
'type': 'text',
'placeholder': 'your email'
}),
required=True
)
password = forms.CharField(
widget=forms.PasswordInput(
render_value=False,
attrs={
'id': 'inputPassword',
'class': 'form-control inp',
'type': 'password',
'placeholder': 'Password'
}
),
required=True
)
这里是表单
class Home(View):
template_name = "sellers/seller_home.html"
form_class = LoginForm
def get(self, request , *args , **kwargs):
context = {}
login_form = LoginForm()
context['login_form'] = login_form
return render(request , "sellers/seller_home.html" , context)
def post(self , request , *args , **kwargs):
email = request.POST.get('email')
name = request.POST.get('store_name')
password = request.POST.get('password')
mobile = request.POST.get('mobile')
form = self.form_class(request.POST)
if request.is_ajax():
if email:
if User.objects.filter(email=email).exists():
return HttpResponse(json.dumps('True'))
else:
return HttpResponse(json.dumps('False'))
if mobile:
if User.objects.filter(mobile=mobile).exists():
return HttpResponse(json.dumps('True'))
else:
return HttpResponse(json.dumps('False'))
else:
if form.is_valid():
email = form.cleaned_data["email"]
password = form.cleaned_data["password"]
user = User.objects.get(email__iexact=email)
authenticated_user = authenticate(username=user.username , password=password)
if not authenticated_user:
raise ValidationError("Email or password is incorrect")
else:
login(request , authenticated_user)
return HttpResponseRedirect(reverse('dashboard'))
else:
return render(request , self.template_name , {'login_form' : form})
这里的问题IAM面临的看法是,我不能够将验证错误显示为模板中的标签。它将错误作为验证错误抛出。如何以更好的方式实现验证?
这里是回溯
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\django\views\generic\base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\django\views\generic\base.py" in dispatch
89. return handler(request, *args, **kwargs)
File "C:\Users\lenovo\Desktop\Grooved2\grooved\src\sellers\views.py" in post
82. raise ValidationError("Email or password is incorrect")
Exception Type: ValidationError at /sellers/
Exception Value: [u'Email or password is incorrect']