通用
验证
self.clean_字段名 () # 针对单个字段预留的方法,返回该字段的最终值,或raise ValidationError
self.clean_form() # 针对多个字段预留的方法,返回最终cleand_data
示例
#================================
from django import forms
from django.forms import fields
from django.core.exceptions import ValidationError
class UserForm(forms.Form):
username = fields.CharField(label='用户名')
email = fields.EmailField(label='邮箱')
def clean_username(self):
value=self.cleaned_data['username']
if value == 'root':
return value
else:
raise ValidationError('该用户不正确')
def clean(self):
v1 = self.cleaned_data['username']
v2 = self.cleaned_data['email']
if v1 == "root" and v2 =="[email protected]":
pass
else:
raise ValidationError('用户名或邮箱错误')
return self.cleaned_data
初始化
# form初始化
oneform(instanse=onemodel_instance))
oneform(initial={'onefield':value})
ModelForm
from django.forms import CharField, ModelForm
class ArticleForm(ModelForm):
class Meta:
model = Article
fields = ['pub_date', 'headline', 'content', 'reporter']
reader=forms.CharField(max_length=100)
#ModelForm的Meta类中定义的fields 可在Form类内以同名字段覆盖
headline = forms.CharField(widget=forms.Textarea)