通用

验证

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)