Forms#2-fields & widgets

Field類

Field類一個(gè)抽象基類

  • Field.clean(value)
    由于檢測(cè)輸入值的是否符合字段類型,若不符合,引發(fā)django.forms.ValidationError異常
  • Field.required
    布爾型屬性,默認(rèn)為True,即該字段不能為空,否則在使用clean()方法檢查輸入值時(shí)引發(fā)django.forms.ValidationError異常
  • Field.label
    指定label名,若沒(méi)有顯式的指定,Django將自動(dòng)根據(jù)字段名稱創(chuàng)建label名
  • Field.label_suffix
    指定label后綴
  • Field.initial
    初始化字段值,即指定HTML的input標(biāo)簽中的value屬性
  • Field.widget
  • Field.help_text
    用于對(duì)字段的描述
  • Field.error_messages
    用于重載字段的默認(rèn)錯(cuò)誤信息,error_message是一個(gè)字典類型
  • Field.validators
    為該字段提供一個(gè)驗(yàn)證函數(shù)列表
  • Field.localize
  • Field.disabled
    布爾型屬性,默認(rèn)為False,即該字段可用;否則該字段不能被用戶修改
  • Field.has_changed()
    用于檢查該字段的值是否同Field.initial的值一致

Built-in Field classes

官方文檔給出了每個(gè)內(nèi)建字段的:

  • 默認(rèn)weidget
  • 默認(rèn)值(empty value)
  • 一般類型
  • 驗(yàn)證方式
  • 錯(cuò)誤信息中包含的鍵
  • 一些其它的參數(shù)

widgets

widgets用于指定Django在HTML的<input>元素的表現(xiàn)形式

  • forms中的每個(gè)字段擁有自己默認(rèn)的widget,但同時(shí)也可以顯式地進(jìn)行指定
  • 有的widget類型擁有自己的參數(shù)
    from django import forms
    
    BIRTH_YEAR_CHOICES = ('1980', '1981', '1982')
    FAVORITE_COLORS_CHOICES = (
        ('blue', 'Blue'),
        ('green', 'Green'),
        ('black', 'Black'),
    )
    
    class SimpleForm(forms.Form):
        birth_year = forms.DateField(widget=forms.SelectDateWidget(years=BIRTH_YEAR_CHOICES))
        favorite_colors = forms.MultipleChoiceField(
            required=False,
            widget=forms.CheckboxSelectMultiple,
            choices=FAVORITE_COLORS_CHOICES,
        )
    
  • 自定義widget樣式
    通過(guò)在初始化widget對(duì)象時(shí)指定一些額外的對(duì)象來(lái)改變其表現(xiàn)樣式(例如添加class屬性使得可以使用CSS進(jìn)行樣式調(diào)整)
    class CommentForm(forms.Form):
        # 可以通過(guò)attrs參數(shù)來(lái)對(duì)<input>元素添加額外的屬性
        # 注意,此處使用的是CharField默認(rèn)的widget,只不過(guò)對(duì)其指定了一些額外的屬性
        name = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
        url = forms.URLField()
        comment = forms.CharField(widget=forms.TextInput(attrs={'size': '40'}))
    
  • class Widget(attrs=None)
    Widget是一個(gè)抽象基類
    • attrs
      一個(gè)包含HTML屬性的字典

Built-in widgets

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容