一实胸、表單常用的屬性
大部分的類是繼承Field
所以大部分的標(biāo)簽都有公共的屬性
-
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_length
或min_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.localize
是False
時(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.localize
是False
時(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.localize
是False
時(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_value
和min_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_length
和min_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.datetime
、datetime.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})