【发布时间】:2019-08-14 21:34:38
【问题描述】:
我刚开始使用基于类的视图而不是函数,如果这是一个显而易见的问题,很抱歉,但是 form_valid() 和 form_invalid() 在继承自 FormView 的类中做了什么? Django 说:
"这个方法在有效的表单数据被 POST 后被调用。它应该 返回
HttpResponse"
但我不明白它是如何验证的?在保存数据之前,我需要在表单上执行其他检查(例如在注册时,确保输入的两个密码相同)。如果我愿意,如何添加更多支票?
这是我一直在使用的代码
forms.py
class SignupForm(forms.Form):
email = forms.EmailField()
alias = forms.CharField(max_length=15)
password = forms.CharField(max_length=128, widget=forms.PasswordInput)
confirm_pass = forms.CharField(max_length=128, widget=forms.PasswordInput)
# used to verify if the passwords match
def pwd_match(self):
if self.is_valid():
cd = self.cleaned_data
if cd.get('password') == cd.get('confirm_pass'):
return True
else:
return False
def fields_correct(self):
if self.pwd_match() and self.is_valid():
return True
return False
views.py
class SignupFormView(AjaxFormMixin, FormView):
form_class = SignupForm
template_name = 'forum/signup.html'
success_url = reverse_lazy('home')
def form_valid(self, form):
# here I want to make sure that the passwords match and then save the user
提前谢谢!
【问题讨论】:
标签: django django-forms django-views django-class-based-views