django_form_表单字段速查

一、表单常用的属性

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

image.png

  • use_required_attribute

去除浏览器的判断属性,在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 就默认字段
    )
  • required 是否必须填

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

  • error_messages参数让你覆盖字段引发的异常中的默认信息

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

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

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

  • initial

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

  • widget

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

  • help_text

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

  • validators自定义验证规则
  • localize是否支持本地化
  • disabled是否可编辑

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

  • label_suffix

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

  • show_hidden_initia

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

二、常用的标签字段

  • CharField 文本判断

  • max_length,min_length,strip,empty_value
  • 默认的Widget:TextInput
  • 空值:与empty_value给出的任何值。
  • 规范化为:一个Unicode 对象。
  • 如果提供,验证max_lengthmin_length。 否则,所有的输入都是合法的。
  • 错误信息的键:min_length, max_length, required
  • IntegerField 数字判断

  • max_value=12,#最大数,min_value=6,#最小数
age = fields.IntegerField(
        max_value=12,#最大数
        min_value=6,#最小数)
  • 默认的Widget:当Field.localizeFalse 时为NumberInput,否则为TextInput
  • 空值:None
  • 规范化为:一个Python 整数或长整数。
  • 验证给定值是一个整数。 允许前导和尾随空格,如Python的int()函数。
  • 错误信息的键:max_value, invalid, required, min_value
  • DecimalField小数判断

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

  • 默认的Widget:当Field.localizeFalse 时为NumberInput,否则为TextInput
  • 空值:None
  • 规范化为:一个Python decimal
  • 验证给定的值为一个十进制数。 忽略前导和尾随的空白。
  • 错误信息的键:max_whole_digits, max_digits, max_decimal_places, max_value, invalid, required, min_value
  • FloatField 小数判断

  • 默认的Widget:当Field.localizeFalse 时为NumberInput,否则为TextInput
  • 空值:None
  • 规范化为:一个Float 对象。
  • 验证给定的值是一个浮点数。 和Python 的float() 函数一样,允许前导和尾随的空白符。
  • 错误信息的键:max_value, invalid, required, min_value

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

  • EmailField邮箱判断

  • max_length ,min_length
  • 默认的Widget:EmailInput
  • 空值:''(一个空字符串)
  • 规范化为:一个Unicode 对象。
  • 验证给出的值是一个合法的邮件地址,使用一个适度复杂的正则表达式。
  • 错误信息的键:required, invalid

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

  • ChoiceField下拉框

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

 chicecity = fields.ChoiceField(
        #后台将接受的value都是字符串
        choices=[(1,'大连'),(2,"北京")] ,#下拉展示
        initial=2 ,#默认展示选择
        required=True, #是否必填
        widget = None, #插件,默认select插件
        label = None, #Label内容
    )
  • 默认的Widget:Select
  • 空值:''(一个空字符串)
  • 规范化为:一个Unicode 对象。
  • 验证给定的值在选项列表中存在。
  • 错误信息的键:required, invalid_choice
  • TypedChoiceField下拉框类型转换
 typechi = fields.TypedChoiceField(
        choices=[(1, '大连'), (2, "北京")],
        coerce=lambda x: int(x),
        #对选中的值进行一次转换
        initial = '1',
        #空值的默认值
    )

  • 默认的Widget:Select
  • 空值:与empty_value给出的任何值。
  • 规范化为:coerce 参数类型的值。
  • 验证给定的值在选项列表中存在并且可以被强制转换。
  • 错误信息的键:required, invalid_choice
  • MultipleChoiceField多选判断

multchic = fields.MultipleChoiceField(
        # 后台将接受的value都是字符串
        choices=[(1, '大连'), (2, "北京")],  # 下拉展示
        initial=2,  # 默认展示选择
        required=True,  # 是否必填
        widget=None,  # 插件,默认select插件
        label=None,  # Label内容
    )
  • 默认的Widget:SelectMultiple
  • 空值:[](一个空列表)
  • 规范化为:一个Unicode 对象列表。
  • 验证给定值列表中的每个值都存在于选择列表中。
  • 错误信息的键:invalid_list, invalid_choice, required
  • Datetime 年月日显示

 Datetime = fields.DateField(
        #格式要求:2018-02-25
    )
  • 默认的Widget:DateInput
  • 空值:None
  • 规范化为:一个Python datetime.date 对象。
  • 验证给出的值是一个datetime.datedatetime.datetime 或指定日期格式的字符串。
  • 错误信息的键:required, invalid
  • TypedMultipleChoiceField 多选类型转

  • 默认的Widget:SelectMultiple
  • 空值:empty_value
  • 规范化为:coerce参数提供的类型值列表。
  • 验证给定值存在于选项列表中并且可以强制。
  • 错误信息的键:required, invalid_choice
  • DateTimeField年月日时分秒

   DateTimeTime = fields.DateTimeField(
        # 格式要求:2018-02-25 11:25)
  • 默认的Widget:DateTimeInput
  • 空值:None
  • 规范化为:一个Python datetime.datetime 对象。
  • 验证给出的值是一个datetime.datetimedatetime.date 或指定日期格式的字符串。
  • 错误信息的键:required, invalid
  • TimeField时分显示

 Timetime = fields.TimeField(
        # 格式要求:11:25
    )
  • 默认的Widget:TextInput
  • 空值:None
  • 规范化为:一个Python 的datetime.time 对象。
  • 验证给定值是datetime.time或以特定时间格式格式化的字符串。
  • 错误信息的键:required, invalid
  • DurationField时间间隔

 duratime = fields.DurationField(
        #时间间隔
    )
  • 默认的Widget:TextInput
  • 空值:None
  • 规范化为:一个Python timedelta
  • 验证给出的值是一个字符串,而可以给转换为timedelta
  • 错误信息的键:required, invalid.

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

  • 文件判断FileField

    fielFile = fields.FileField(
    allow_empty_file = False #是否允许空文件
    )
  • 默认的Widget:ClearableFileInput
  • 空值:None
  • 规范化为:一个UploadedFile 对象,它封装文件内容和文件名为一个单独的对象。
  • 可以验证非空的文件数据已经绑定到表单。
  • 错误信息的键:missing, invalid, required, empty, max_length
  • ImageField 图片判断

 image = fields.ImageField(

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

    )
  • 默认的Widget:ClearableFileInput
  • 空值:None
  • 规范化为:一个UploadedFile 对象,它封装文件内容和文件名为一个单独的对象。
  • 验证文件数据已绑定到表单,并且该文件具有Pillow理解的图像格式。
  • 错误信息的键:missing, invalid, required, empty, invalid_image
  • RegexField 自定义

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

    )
  • 默认的Widget:TextInput
  • 空值:''(一个空字符串)
  • 规范化为:一个Unicode 对象。
  • 验证给定值与某个正则表达式匹配。
  • 错误信息的键:required, invalid
  • URLfield 网址判断

  • 默认的Widget:URLInput
  • 空值:''(一个空字符串)
  • 规范化为:一个Unicode 对象。
  • 验证给定值是有效的URL。
  • 错误信息的键:required, invalid

三、select/checkbox/radio

  • select 除了使用提供的,还以用CharField自定制

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

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

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

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

单选时设置value属性

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

多选时

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

    )
  • radio

单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 实时读取数据库内容

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})
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • HTML表单 在HTML中,表单是 ... 之间元素的集合,它们允许访问者输入文本、选择选项、操作对象等等,然后将...
    兰山小亭阅读 3,412评论 2 14
  • form简介 是HTML中的一个元素,它表示文档中的一个区域,这个区域包含了交互控件,用于向web服务器提交信息。...
    七里之境阅读 1,323评论 0 1
  • 转载请声明 原文链接 关注公众号获取更多资讯 这篇文章主要总结H5的一些新增的功能以及一些基础归纳,这里只是一个提...
    程序员poetry阅读 9,068评论 22 225
  • 不知道从何时开始居然慢慢的不生气了。 慢慢的明白生气也是没有用的 生气只能表示你的无奈,你没法去解决问题,你没法按...
    第二风临阅读 400评论 0 0