Form自定制
from django.forms import fields # fields用来定义字段
class FM(forms.Form):
user = fields.CharField(
error_messages={'required':'用户名不能为空'},
widget = widgets.Input(attrs={'class':'c1'}) # “HTML插件”,用来定义标签,并添加属性
)
# 实例化和调用
obj = FM(request.POST)
r1 = obj.is_valid() # 返回Ture or False,表示格式是否正确
obj.cleaned_data # 获取提交的数据
obj.errors # 获取错误信息
Django内置字段:
Field
required=True, 是否允许为空
widget=None, HTML插件
label=None, 用于生成Label标签或显示内容
initial=None, 初始值
help_text='', 帮助信息(在标签旁边显示)
error_messages=None, 错误信息 {'required': '不能为空', 'invalid': '格式错误'}
show_hidden_initial=False, 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
validators=[], 自定义验证规则
localize=False, 是否支持本地化
disabled=False, 是否可以编辑
label_suffix=None Label内容后缀
ChoiceField
......(其他请看链接)
http://www.cnblogs.com/wupeiqi/articles/6144178.html
ModelForm # model+form验证+数据库操作
class UserInfoModelForm(forms.ModelForm):
利用 models.A中字段
1.生成HTML标签:class Meta:...
2.mf = xxxModelForm(instance=ModelObj)
3.添加额外的标签 is_rmb = Ffields.CharField(widget=Fwidgets.CheckboxInput())
4.各种验证is_valid() # 各种钩子
5.mf.save()
# 或
instance = mf.save(False)
instance.save()
mf.save()
class UserInfoModelForm(forms.ModelForm): is_rmb = Ffields.CharField( widget=Fwidgets.CheckboxInput() ) class Meta: model = models.UserInfo # 去哪个类里获取字段 fields = '__all__' # __all__代表所有字段 # fields = ['username'] # 值获取username字段 # exclude = ['username'] # 除了username意外的 # 改名字 labels = { 'email': '邮箱' } # 追加注释 help_texts = { 'username': '...' } # 修改标签和添加属性 widgets = { 'username': Fwidgets.Textarea(attrs={'class':'c1'}) } # 修改提示信息 error_messages = { 'username': { 'required': '用户名不能为空' }, 'email':{ 'required': '邮箱不能为空', 'invalid': '邮箱格式不正确' } } # 修改格式 # field_classes = { # 'email': Ffields.URLField # } class UserInfoForm(forms.Form): username = Ffields.CharField(max_length=32) email = Ffields.EmailInput() user_type = Ffields.ChoiceField( choices=models.UserType.objects.values_list('id', 'caption') ) def __init__(self, *args, **kwargs): super(UserInfoForm, self).__init__(*args, **kwargs) self.fields['user_type'].choices = models.UserType.objects.values_list('id', 'caption')