Django中的表单验证是在视图函数中使用的,在视图函数中,使用表单的is_valid()方法进行验证,但是有时候我们需要在表单类中对用户提交的数据进行进一步的自定义验证操作,这时候就需要使用到clean()函数。
clean()函数介绍
clean()函数是在django中的表单验证过程中定义的一个函数,可以对用户提交的数据进行自定义验证操作。clean()函数可以针对表单中的特定字段进行验证,如果验证不通过,可以通过raise Validation Error()函数来抛出错误。如果验证通过,可以通过return 来返回验证过后的值。
示例1: 对单个字段进行验证
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
email = forms.EmailField(required=False)
message = forms.CharField(widget=forms.Textarea)
def clean_subject(self):
"""
验证subject字段,检查是否全是大写字母
"""
data = self.cleaned_data['subject']
if any(char.islower() for char in data):
raise forms.ValidationError("Subject must be in all capitals")
return data
在这个示例中,我们定义了一个ContactForm表单类,其中包含了subject,email,message三个字段。在clean_subject()函数中,我们对subject字段进行了自定义验证操作。 如果subject中其中有小写字母出现,则会抛出一个ValidationError 异常。
示例2: 对表单整体进行验证
from django import forms
class UserRegistrationForm(forms.Form):
username = forms.CharField(max_length=30)
email = forms.EmailField(required=True)
password1 = forms.CharField(widget=forms.PasswordInput())
password2 = forms.CharField(widget=forms.PasswordInput())
def clean(self):
"""
验证password1, password2两个字段,如果不匹配就抛出异常
"""
cleaned_data = super().clean()
if 'password1' in cleaned_data and 'password2' in cleaned_data:
if cleaned_data['password1'] != cleaned_data['password2']:
raise forms.ValidationError("两次输入密码不一致")
return cleaned_data
在这个示例中,我们定义了一个UserRegistrationForm表单类,其中包含了username, email,password1和password2四个字段。 在clean()函数中,我们对password1和password2进行了自定义验证操作。 如果这两个字段不匹配,则会抛出一个 ValidationError 异常。
以上就是使用Django def clean()函数对表单中的数据进行验证操作的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django def clean()函数对表单中的数据进行验证操作 - Python技术站