django_form_表單字段速查

一实胸、表單常用的屬性

大部分的類是繼承Field所以大部分的標(biāo)簽都有公共的屬性

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={},#錯(cuò)誤信息
        #widget = widgets.Select(),#定義HTML插件
        #widget = widgets.Select(attrs={'class':'tss'}),#加屬性

        label='用戶名' ,#定義label標(biāo)簽顯示內(nèi)容 使用方法:{{ obj.user.label }}
        #initial='xx',#設(shè)置默認(rèn)值,在input默認(rèn)展示值
        help_text='幫助文檔',#在html 后顯示文字 使用方法{{ obj.user.help_text }}
        show_hidden_initial= True, # 生成一個(gè)隱藏的文本框用來記錄 <input type="hidden" name="initial-user" value="xx" id="initial-id_user">
        #validators=[],#自定義驗(yàn)證規(guī)則
        #localize = Flase, #是否支持本地化
#        disabled=True, #是否可編輯枫夺,默認(rèn)Flase 可編輯
        #label_suffix=':'#在調(diào)用as_p as_table 等時(shí)在 label加符號(hào),如果沒設(shè)置lable 就默認(rèn)字段
    )
  • required 是否必須填

判斷表單內(nèi)容是否可以為空

  • error_messages參數(shù)讓你覆蓋字段引發(fā)的異常中的默認(rèn)信息

判斷覆蓋k和設(shè)置字段一一對(duì)應(yīng)痴怨,例如上面的required判斷是否為空 {'required': '不能為空', 'invalid': '格式錯(cuò)誤'},使用的寫法

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

定義label標(biāo)簽顯示內(nèi)容 使用方法:{{ obj.user.label }}

  • initial

initial='xx',#設(shè)置默認(rèn)值,在input默認(rèn)展示值辕翰,也可傳入對(duì)象initial=datetime.date.today,在未綁定表達(dá)使用狈谊,比在綁定表單時(shí)get請(qǐng)求時(shí)喜命,傳入的字典,不會(huì)觸發(fā)form表單判斷機(jī)制

  • widget

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

  • help_text

help_text='幫助文檔',#在html 后顯示文字 使用方法{{ obj.user.help_text }}

  • validators自定義驗(yàn)證規(guī)則
  • localize是否支持本地化
  • disabled是否可編輯

disabled=True, #是否可編輯河劝,默認(rèn)Flase 可編輯

  • label_suffix

label_suffix=':'#在調(diào)用as_p as_table 等時(shí)在 label加符號(hào),如果沒設(shè)置lable 就默認(rèn)字段

  • show_hidden_initia

show_hidden_initial= True, # 生成一個(gè)隱藏的文本框用來記錄<input type="hidden" name="initial-user" value="xx" id="initial-id_user">

二壁榕、常用的標(biāo)簽字段

  • CharField 文本判斷

  • max_length,min_length赎瞎,strip牌里,empty_value
  • 默認(rèn)的Widget:TextInput
  • 空值:與empty_value給出的任何值。
  • 規(guī)范化為:一個(gè)Unicode 對(duì)象。
  • 如果提供牡辽,驗(yàn)證max_lengthmin_length喳篇。 否則,所有的輸入都是合法的态辛。
  • 錯(cuò)誤信息的鍵:min_length, max_length, required
  • IntegerField 數(shù)字判斷

  • max_value=12,#最大數(shù)麸澜,min_value=6,#最小數(shù)
age = fields.IntegerField(
        max_value=12,#最大數(shù)
        min_value=6,#最小數(shù))
  • 默認(rèn)的Widget:當(dāng)Field.localizeFalse 時(shí)為NumberInput,否則為TextInput奏黑。
  • 空值:None
  • 規(guī)范化為:一個(gè)Python 整數(shù)或長整數(shù)炊邦。
  • 驗(yàn)證給定值是一個(gè)整數(shù)。 允許前導(dǎo)和尾隨空格熟史,如Python的int()函數(shù)铣耘。
  • 錯(cuò)誤信息的鍵:max_value, invalid, required, min_value
  • DecimalField小數(shù)判斷

max_value最大值 min_value max_digits總長度 decimal_places小數(shù)位長度

  • 默認(rèn)的Widget:當(dāng)Field.localizeFalse 時(shí)為NumberInput,否則為TextInput以故。
  • 空值:None
  • 規(guī)范化為:一個(gè)Python decimal
  • 驗(yàn)證給定的值為一個(gè)十進(jìn)制數(shù)裆操。 忽略前導(dǎo)和尾隨的空白怒详。
  • 錯(cuò)誤信息的鍵:max_whole_digits, max_digits, max_decimal_places, max_value, invalid, required, min_value
  • FloatField 小數(shù)判斷

  • 默認(rèn)的Widget:當(dāng)Field.localizeFalse 時(shí)為NumberInput,否則為TextInput踪区。
  • 空值:None
  • 規(guī)范化為:一個(gè)Float 對(duì)象昆烁。
  • 驗(yàn)證給定的值是一個(gè)浮點(diǎn)數(shù)。 和Python 的float() 函數(shù)一樣缎岗,允許前導(dǎo)和尾隨的空白符静尼。
  • 錯(cuò)誤信息的鍵:max_value, invalid, required, min_value

接收兩個(gè)可選的參數(shù)用于驗(yàn)證,max_valuemin_value传泊。 它們控制字段中允許的值的范圍鼠渺。

  • EmailField郵箱判斷

  • max_length ,min_length
  • 默認(rèn)的Widget:EmailInput
  • 空值:''(一個(gè)空字符串)
  • 規(guī)范化為:一個(gè)Unicode 對(duì)象。
  • 驗(yàn)證給出的值是一個(gè)合法的郵件地址眷细,使用一個(gè)適度復(fù)雜的正則表達(dá)式拦盹。
  • 錯(cuò)誤信息的鍵:required, invalid

具有兩個(gè)可選的參數(shù)用于驗(yàn)證,max_lengthmin_length溪椎。 如果提供普舆,這兩個(gè)參數(shù)將確保字符串的最大和最小長度。

  • ChoiceField下拉框

choices=[(1,'大連'),(2,"北京")] 下拉展示
initial=2 ,#默認(rèn)展示選擇

 chicecity = fields.ChoiceField(
        #后臺(tái)將接受的value都是字符串
        choices=[(1,'大連'),(2,"北京")] ,#下拉展示
        initial=2 ,#默認(rèn)展示選擇
        required=True, #是否必填
        widget = None, #插件校读,默認(rèn)select插件
        label = None, #Label內(nèi)容
    )
  • 默認(rèn)的Widget:Select
  • 空值:''(一個(gè)空字符串)
  • 規(guī)范化為:一個(gè)Unicode 對(duì)象沼侣。
  • 驗(yàn)證給定的值在選項(xiàng)列表中存在。
  • 錯(cuò)誤信息的鍵:required, invalid_choice
  • TypedChoiceField下拉框類型轉(zhuǎn)換
 typechi = fields.TypedChoiceField(
        choices=[(1, '大連'), (2, "北京")],
        coerce=lambda x: int(x),
        #對(duì)選中的值進(jìn)行一次轉(zhuǎn)換
        initial = '1',
        #空值的默認(rèn)值
    )

  • 默認(rèn)的Widget:Select
  • 空值:與empty_value給出的任何值歉秫。
  • 規(guī)范化為:coerce 參數(shù)類型的值蛾洛。
  • 驗(yàn)證給定的值在選項(xiàng)列表中存在并且可以被強(qiáng)制轉(zhuǎn)換。
  • 錯(cuò)誤信息的鍵:required, invalid_choice
  • MultipleChoiceField多選判斷

multchic = fields.MultipleChoiceField(
        # 后臺(tái)將接受的value都是字符串
        choices=[(1, '大連'), (2, "北京")],  # 下拉展示
        initial=2,  # 默認(rèn)展示選擇
        required=True,  # 是否必填
        widget=None,  # 插件,默認(rèn)select插件
        label=None,  # Label內(nèi)容
    )
  • 默認(rèn)的Widget:SelectMultiple
  • 空值:[](一個(gè)空列表)
  • 規(guī)范化為:一個(gè)Unicode 對(duì)象列表边篮。
  • 驗(yàn)證給定值列表中的每個(gè)值都存在于選擇列表中。
  • 錯(cuò)誤信息的鍵:invalid_list, invalid_choice, required
  • Datetime 年月日顯示

 Datetime = fields.DateField(
        #格式要求:2018-02-25
    )
  • 默認(rèn)的Widget:DateInput
  • 空值:None
  • 規(guī)范化為:一個(gè)Python datetime.date 對(duì)象救崔。
  • 驗(yàn)證給出的值是一個(gè)datetime.date扶供、datetime.datetime 或指定日期格式的字符串筛圆。
  • 錯(cuò)誤信息的鍵:required, invalid
  • TypedMultipleChoiceField 多選類型轉(zhuǎn)

  • 默認(rèn)的Widget:SelectMultiple
  • 空值:empty_value
  • 規(guī)范化為:coerce參數(shù)提供的類型值列表。
  • 驗(yàn)證給定值存在于選項(xiàng)列表中并且可以強(qiáng)制椿浓。
  • 錯(cuò)誤信息的鍵:required, invalid_choice
  • DateTimeField年月日時(shí)分秒

   DateTimeTime = fields.DateTimeField(
        # 格式要求:2018-02-25 11:25)
  • 默認(rèn)的Widget:DateTimeInput
  • 空值:None
  • 規(guī)范化為:一個(gè)Python datetime.datetime 對(duì)象太援。
  • 驗(yàn)證給出的值是一個(gè)datetime.datetimedatetime.date 或指定日期格式的字符串扳碍。
  • 錯(cuò)誤信息的鍵:required, invalid
  • TimeField時(shí)分顯示

 Timetime = fields.TimeField(
        # 格式要求:11:25
    )
  • 默認(rèn)的Widget:TextInput
  • 空值:None
  • 規(guī)范化為:一個(gè)Python 的datetime.time 對(duì)象提岔。
  • 驗(yàn)證給定值是datetime.time或以特定時(shí)間格式格式化的字符串。
  • 錯(cuò)誤信息的鍵:required, invalid
  • DurationField時(shí)間間隔

 duratime = fields.DurationField(
        #時(shí)間間隔
    )
  • 默認(rèn)的Widget:TextInput
  • 空值:None
  • 規(guī)范化為:一個(gè)Python timedelta笋敞。
  • 驗(yàn)證給出的值是一個(gè)字符串碱蒙,而可以給轉(zhuǎn)換為timedelta
  • 錯(cuò)誤信息的鍵:required, invalid.

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

  • 文件判斷FileField

    fielFile = fields.FileField(
    allow_empty_file = False #是否允許空文件
    )
  • 默認(rèn)的Widget:ClearableFileInput
  • 空值:None
  • 規(guī)范化為:一個(gè)UploadedFile 對(duì)象赛惩,它封裝文件內(nèi)容和文件名為一個(gè)單獨(dú)的對(duì)象。
  • 可以驗(yàn)證非空的文件數(shù)據(jù)已經(jīng)綁定到表單趁餐。
  • 錯(cuò)誤信息的鍵:missing, invalid, required, empty, max_length
  • ImageField 圖片判斷

 image = fields.ImageField(

    #注:需要PIL模塊喷兼,pip3 install Pillow
    #以上兩個(gè)字典使用時(shí),需要注意兩點(diǎn):
    #- form表單中
    #enctype = "multipart/form-data"
    #- view函數(shù)中
   # obj = MyForm(request.POST, request.FILES)

    )
  • 默認(rèn)的Widget:ClearableFileInput
  • 空值:None
  • 規(guī)范化為:一個(gè)UploadedFile 對(duì)象后雷,它封裝文件內(nèi)容和文件名為一個(gè)單獨(dú)的對(duì)象季惯。
  • 驗(yàn)證文件數(shù)據(jù)已綁定到表單,并且該文件具有Pillow理解的圖像格式臀突。
  • 錯(cuò)誤信息的鍵:missing, invalid, required, empty, invalid_image
  • RegexField 自定義

rege = fields.RegexField(
        regex="",#自定義判斷的正則表達(dá)式
        max_length="22",
        min_length="33",

    )
  • 默認(rèn)的Widget:TextInput
  • 空值:''(一個(gè)空字符串)
  • 規(guī)范化為:一個(gè)Unicode 對(duì)象勉抓。
  • 驗(yàn)證給定值與某個(gè)正則表達(dá)式匹配。
  • 錯(cuò)誤信息的鍵:required, invalid
  • URLfield 網(wǎng)址判斷

  • 默認(rèn)的Widget:URLInput
  • 空值:''(一個(gè)空字符串)
  • 規(guī)范化為:一個(gè)Unicode 對(duì)象惧辈。
  • 驗(yàn)證給定值是有效的URL琳状。
  • 錯(cuò)誤信息的鍵:required, invalid

三、select/checkbox/radio

  • select 除了使用提供的盒齿,還以用CharField自定制

只適合單選也可以用下面的CharField念逞,返回字符串,因?yàn)槎ㄖ茖傩?/p>

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

也可以用下面的CharField边翁,返回?cái)?shù)字

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

單選時(shí)設(shè)置value屬性

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

多選時(shí)

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
    )
  • 設(shè)置select 實(shí)時(shí)讀取數(shù)據(jù)庫內(nèi)容

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})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末符匾,一起剝皮案震驚了整個(gè)濱河市叨咖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖甸各,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垛贤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡趣倾,警方通過查閱死者的電腦和手機(jī)聘惦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來儒恋,“玉大人善绎,你說我怎么就攤上這事〗刖。” “怎么了禀酱?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長牧嫉。 經(jīng)常有香客問我剂跟,道長,這世上最難降的妖魔是什么酣藻? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任浩聋,我火速辦了婚禮,結(jié)果婚禮上臊恋,老公的妹妹穿的比我還像新娘。我一直安慰自己墓捻,他們只是感情好抖仅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著砖第,像睡著了一般撤卢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梧兼,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天放吩,我揣著相機(jī)與錄音,去河邊找鬼羽杰。 笑死渡紫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的考赛。 我是一名探鬼主播惕澎,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼颜骤!你這毒婦竟也來了唧喉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎八孝,沒想到半個(gè)月后董朝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡干跛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年子姜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驯鳖。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闲询,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出浅辙,到底是詐尸還是另有隱情扭弧,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布记舆,位于F島的核電站鸽捻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泽腮。R本人自食惡果不足惜御蒲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诊赊。 院中可真熱鬧厚满,春花似錦、人聲如沸碧磅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鲸郊。三九已至丰榴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秆撮,已是汗流浹背四濒。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留职辨,地道東北人盗蟆。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像舒裤,于是被迫代替她去往敵國和親姆涩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理惭每,服務(wù)發(fā)現(xiàn)骨饿,斷路器亏栈,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • HTML表單 在HTML中,表單是 ... 之間元素的集合宏赘,它們?cè)试S訪問者輸入文本绒北、選擇選項(xiàng)、操作對(duì)象等等察署,然后將...
    蘭山小亭閱讀 3,418評(píng)論 2 14
  • form簡介 是HTML中的一個(gè)元素闷游,它表示文檔中的一個(gè)區(qū)域,這個(gè)區(qū)域包含了交互控件贴汪,用于向web服務(wù)器提交信息脐往。...
    七里之境閱讀 1,328評(píng)論 0 1
  • 轉(zhuǎn)載請(qǐng)聲明 原文鏈接 關(guān)注公眾號(hào)獲取更多資訊 這篇文章主要總結(jié)H5的一些新增的功能以及一些基礎(chǔ)歸納,這里只是一個(gè)提...
    程序員poetry閱讀 9,071評(píng)論 22 225
  • 不知道從何時(shí)開始居然慢慢的不生氣了扳埂。 慢慢的明白生氣也是沒有用的 生氣只能表示你的無奈业簿,你沒法去解決問題,你沒法按...
    第二風(fēng)臨閱讀 403評(píng)論 0 0