這裏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']