django_form_表单字段速查

2018-02-25  本文已影响34人  两点半的杂货铺

一、表单常用的属性

大部分的类是继承Field所以大部分的标签都有公共的属性

image.png

去除浏览器的判断属性,在form表单类生命

class TestForm(forms.Form):
    use_required_attribute = False
class TestForm(forms.Form):
    use_required_attribute = False
    user = fields.CharField(
        max_length=12,#最大长度
        min_length=12,#最小长度
        #empty_value = "111",
        required = True,  # 是否必须填
        error_messages={},#错误信息
        #widget = widgets.Select(),#定义HTML插件
        #widget = widgets.Select(attrs={'class':'tss'}),#加属性

        label='用户名' ,#定义label标签显示内容 使用方法:{{ obj.user.label }}
        #initial='xx',#设置默认值,在input默认展示值
        help_text='帮助文档',#在html 后显示文字 使用方法{{ obj.user.help_text }}
        show_hidden_initial= True, # 生成一个隐藏的文本框用来记录 <input type="hidden" name="initial-user" value="xx" id="initial-id_user">
        #validators=[],#自定义验证规则
        #localize = Flase, #是否支持本地化
#        disabled=True, #是否可编辑,默认Flase 可编辑
        #label_suffix=':'#在调用as_p as_table 等时在 label加符号,如果没设置lable 就默认字段
    )

判断表单内容是否可以为空

判断覆盖k和设置字段一一对应,例如上面的required判断是否为空 {'required': '不能为空', 'invalid': '格式错误'},使用的写法

name = forms.CharField(error_messages={'required': 'Please enter your name'})

定义label标签显示内容 使用方法:{{ obj.user.label }}

initial='xx',#设置默认值,在input默认展示值,也可传入对象initial=datetime.date.today,在未绑定表达使用,比在绑定表单时get请求时,传入的字典,不会触发form表单判断机制

widget = widgets.Select(),#定义HTML插件
widget = widgets.Select(attrs={'class':'tss'}),#加属性

help_text='帮助文档',#在html 后显示文字 使用方法{{ obj.user.help_text }}

disabled=True, #是否可编辑,默认Flase 可编辑

label_suffix=':'#在调用as_p as_table 等时在 label加符号,如果没设置lable 就默认字段

show_hidden_initial= True, # 生成一个隐藏的文本框用来记录<input type="hidden" name="initial-user" value="xx" id="initial-id_user">

二、常用的标签字段

age = fields.IntegerField(
        max_value=12,#最大数
        min_value=6,#最小数)

max_value最大值 min_value max_digits总长度 decimal_places小数位长度

接收两个可选的参数用于验证,max_valuemin_value。 它们控制字段中允许的值的范围。

具有两个可选的参数用于验证,max_lengthmin_length。 如果提供,这两个参数将确保字符串的最大和最小长度。

choices=[(1,'大连'),(2,"北京")] 下拉展示
initial=2 ,#默认展示选择

 chicecity = fields.ChoiceField(
        #后台将接受的value都是字符串
        choices=[(1,'大连'),(2,"北京")] ,#下拉展示
        initial=2 ,#默认展示选择
        required=True, #是否必填
        widget = None, #插件,默认select插件
        label = None, #Label内容
    )
 typechi = fields.TypedChoiceField(
        choices=[(1, '大连'), (2, "北京")],
        coerce=lambda x: int(x),
        #对选中的值进行一次转换
        initial = '1',
        #空值的默认值
    )

multchic = fields.MultipleChoiceField(
        # 后台将接受的value都是字符串
        choices=[(1, '大连'), (2, "北京")],  # 下拉展示
        initial=2,  # 默认展示选择
        required=True,  # 是否必填
        widget=None,  # 插件,默认select插件
        label=None,  # Label内容
    )
 Datetime = fields.DateField(
        #格式要求:2018-02-25
    )
   DateTimeTime = fields.DateTimeField(
        # 格式要求:2018-02-25 11:25)
 Timetime = fields.TimeField(
        # 格式要求:11:25
    )
 duratime = fields.DurationField(
        #时间间隔
    )

接收任何可以被parse_duration() 理解的格式。

    fielFile = fields.FileField(
    allow_empty_file = False #是否允许空文件
    )
 image = fields.ImageField(

    #注:需要PIL模块,pip3 install Pillow
    #以上两个字典使用时,需要注意两点:
    #- form表单中
    #enctype = "multipart/form-data"
    #- view函数中
   # obj = MyForm(request.POST, request.FILES)

    )
rege = fields.RegexField(
        regex="",#自定义判断的正则表达式
        max_length="22",
        min_length="33",

    )

三、select/checkbox/radio

只适合单选也可以用下面的CharField,返回字符串,因为定制属性

xbd = fields.CharField(
        widget = widgets.Select(choices=[(1,"鸟")])
    )

也可以用下面的CharField,返回数字

xbd = fields.IntegerField(
        widget=widgets.Select(choices=[(1, "鸟")])
    )

单选时设置value属性

xbd = fields.CharField(
        widget = widgets.CheckboxInput({'value':'1'})
    )

多选时

xdb = fields.MultipleChoiceField(
            initial=[2,],
            choices=[(1, '大连'), (2, "北京")],
            widget=widgets.CheckboxSelectMultiple

    )

单radio,值为字符串

   user = fields.CharField(
        initial=2,
        widget=widgets.RadioSelect(choices=((1,'上海'),(2,'北京'),))
    )

单radio,值为字符串

    user = fields.ChoiceField(
        choices=((1, '上海'), (2, '北京'),),
        initial=2,
        widget=widgets.RadioSelect
    )
class tupdata(forms.Form):
    def __init__(self,*args,**kwargs):
        super(tupdata,self).__init__(*args,**kwargs)
        self.fields['xdb'].widget.choices = models.UserInfo.objects.values_list('id','usernmae')
    xdb = fields.CharField(
        widget =widgets.Select(),
        label = "111",
    )

def test_updata(reuqest):
    obj = tupdata()
    return render(reuqest,"test1.html",{'obj1':obj})
上一篇 下一篇

猜你喜欢

热点阅读