form组件

一、form组件
    1.- Form组件
            - 创建类,继承Form
            - 创建字段,字段=正则表达式; PS: 字段名称,required,  error_messages = {required,invalid}
            - form = MyForm(data=request.POST)
            - form.is_valid()
            - form.cleaned_data
            - form.errors
    2.Form组件
            1. 用户请求数据验证
            2. 自动生成错误信息
            3. 打包用户提交正确信息
            4. 错误:保留上次输入内容
            5. 定制页面上显示的HTML标签
            Django Form组件
            1. 创建规则(类,字段)
                class Foo:
                    username = xxx
                    password = xxx
                    email = xxx
            2. 数据和规则进行匹配
                form = Foo(data=xxx,initial=初始化)
                form.is_valid()
                form.cleaned_data
                form.errors
    3.内置字段
            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内容后缀
        CharField(Field)
            max_length=None,             最大长度
            min_length=None,             最小长度
            strip=True                   是否移除用户输入空白
        IntegerField(Field)
            max_value=None,              最大值
            min_value=None,              最小值
        FloatField(IntegerField)
        DecimalField(IntegerField)
            max_value=None,              最大值
            min_value=None,              最小值
            max_digits=None,             总长度
            decimal_places=None,         小数位长度
        BaseTemporalField(Field)
            input_formats=None          时间格式化  
        DateField(BaseTemporalField)    格式:2015-09-01
        TimeField(BaseTemporalField)    格式:11:12
        DateTimeField(BaseTemporalField)格式:2015-09-01 11:12
        DurationField(Field)            时间间隔:%d %H:%M:%S.%f    
    4.内置插件
            TextInput(Input)
            NumberInput(TextInput)
            EmailInput(TextInput)
            URLInput(TextInput)
            PasswordInput(TextInput)
            HiddenInput(TextInput)
            Textarea(Widget)
            DateInput(DateTimeBaseInput)
            DateTimeInput(DateTimeBaseInput)
            TimeInput(DateTimeBaseInput)
            CheckboxInput
            Select
            NullBooleanSelect
            SelectMultiple
            RadioSelect
            CheckboxSelectMultiple
            FileInput
            ClearableFileInput
            MultipleHiddenInput
            SplitDateTimeWidget
            SplitHiddenDateTimeWidget
            SelectDateWidget    
    5.常用选择插件
            单radio,值为字符串
            user = fields.CharField(
                initial=2,
                widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),))
            )
            单radio,值为字符串
            user = fields.ChoiceField(
                choices=((1, '上海'), (2, '北京'),),
                initial=2,
                widget=widgets.RadioSelect
            )
            单select,值为字符串
            user = fields.CharField(
                initial=2,
                widget=widgets.Select(choices=((1,'上海'),(2,'北京'),))
             )
            单select,值为字符串
            user = fields.ChoiceField(
                choices=((1, '上海'), (2, '北京'),),
                initial=2,
                widget=widgets.Select
            )
            多选select,值为列表
            user = fields.MultipleChoiceField(
                choices=((1,'上海'),(2,'北京'),),
                initial=[1,],
                widget=widgets.SelectMultiple
            )
            单checkbox
            user = fields.CharField(
               widget=widgets.CheckboxInput()
            )
           多选checkbox,值为列表
            user = fields.MultipleChoiceField(
               initial=[2, ],
               choices=((1, '上海'), (2, '北京'),),
               widget=widgets.CheckboxSelectMultiple

三、   

   1. Form基本使用
        - 类
        - 字段
        - is_valid
        - cleaned_data
        - errors
    2. 字段参数:
         - max_length
         - min_length
         - validators = [RegexValidator('xxx')]
    3. 钩子函数
        - clean_字段名
        注意:
            必须有返回值
            只能拿自己当前字段值
            raise ValidationError('xxx')
    4. 下拉框数据源实时更新
        - 重写构造方法
            __init__
                - 先执行父类构造方法
                - self.fields['xx'].choices = xxxxx
        - ModelChoiceField

四、

form组件
    1.- Form组件
            - 创建类,继承Form
            - 创建字段,字段=正则表达式; PS: 字段名称,required,  error_messages = {required,invalid}
            - form = MyForm(data=request.POST)
            - form.is_valid()
            - form.cleaned_data
            - form.errors
    2.Form组件
            1. 用户请求数据验证
            2. 自动生成错误信息
            3. 打包用户提交正确信息
            4. 错误:保留上次输入内容
            5. 定制页面上显示的HTML标签
            Django Form组件
            1. 创建规则(类,字段)
                class Foo:
                    username = xxx
                    password = xxx
                    email = xxx
            2. 数据和规则进行匹配
                form = Foo(data=xxx,initial=初始化)
                form.is_valid()
                form.cleaned_data
                form.errors

原文地址:https://www.cnblogs.com/mengqingjian/p/7810860.html