Django 之Form
具體可參考:http://www.liujiangblog.com/course/django/153
https://www.cnblogs.com/liuguniang/p/7141837.html
https://www.cnblogs.com/liwenzhou/p/8747872.html
一,Form字段:
1)驗證
2)生成HTML(保留上次輸入內容)
3)初始化默認值
?Form 重點字段:
------ChoiceField *****8
------MultipleChoiceField
------CharField
------IntegerField
------DecimalField
------DateField
------DateTimeField
------EmailField
------GenericIPAdressField--
------FileField
------RegexField
?
三,具體用法:
?1)CharField的參數
class TestForm(forms.Form):user = fields.CharField(
required=True, # 是否必填
max_length=12, # 最大長度
min_length=3, # 最小長度
error_messages={ # 錯誤提示
'required':''
},
# widget = widgets.Textarea, # 定制html插件
# widget=widgets.Select,
label="用戶名",
initial='請輸入用戶名', # 默認值
show_hidden_initial=False, # 是否在當前插件在家一個隱藏的且具有默認值的插件(可用于檢驗兩次輸入是否一致)
validators=[], # 自定制驗證規則(是否是手機號)
localize=False, # 是否支持本地化
disabled=True, # 是否可以編輯
label_suffix=":",
)
age = fields.IntegerField(label="年齡",)
email = fields.EmailField(label="郵箱",)
?
當widget = widgets.Textarea 展示效果如下?
當widget=widgets.Select展示效果如下?
2)
簡單了解 1){{ obj.as_p }} 2) <ul>{{ obj.as_ul }} </ul> 3) <table> {{ obj.as_table}} </table>?3)IntegerField類型?
age = fields.IntegerField(label="年齡",max_value=12,min_value=5,error_messages={'max_value' : "太大了"})?4)DecimalField類型
weight = fields.DecimalField(label = "體重",max_value=30, # 最大值min_value=10, # 最小值max_digits=5, #總長度decimal_places=3, #小數位的長度)?5)RegexField正則
6)EmailField
7)URLField
8)FileField
?
img = fields.FileField(label="上傳文件")?.html中
novalidate enctype="multipart/form-data"?9)ChoiceField
city = fields.ChoiceField(label="城市",choices=[(1,"上海"),(2,"北京"),(3,"天津"),],initial = 2,)?10)MultipleChoiceField
hobby = fields.MultipleChoiceField(label="愛好",choices=[(1, "籃球"), (2, "足球"), (3, "乒乓球"), ],initial=[1, 2], # 多選是列表)?11)TypeChoiceField 轉換類型的,打印輸出的chocices 1不是字符串類型而是int類型
city = fields.TypedChoiceField(coerce=lambda x: int(x),#轉換類型label="城市",choices=[(1, "上海"), (2, "北京"), (3, "天津"), ],initial=2, # 單選是單值)?
二.Form 之 插件:每一個fields字段都是一個正則表達式+默認的插件組成的,
1)更改默認插件:
widget = widgets.TextInput(attrs={'n':123}), #加自定義屬性?
?2)如果想把
txt = "<input type = 'text/>" 標簽類的文本展示到頁面上,需要在view傳值的頁面加上 from django.utils.safestring import mark_safetxt =mark_safe("<input type = 'text/>")?3)Django 的內置插件: 單選的兩種寫法如下: select
只有select 有choice input什么的沒有 xdb = fields.CharField(widget=widgets.Select(choices=[(1,"11"),(2,"22"),]))也可以直接用ChoiceField xdb = fields.ChoiceField(
choices=[(1,"11"),(2,"22"),]
)
?多選的寫法如下:
xdb = fileds.MultipleChoiceField(choices = [(1,"111"),(2,"222")]widget = widgets.SelectMultiple(attrs = {"class":"cl"}) )?4)checkbox(單選的)
xdb = fields.CharField(# widget=widgets.Select(choices=[(1,"11"),(2,"22"),])widget=widgets.CheckboxInput())?5)checkbox(多選的)
xdb = fields.MultipleChoiceField(initial=[2,],choices = [(1, "籃球"), (2, "足球"), (3, "乒乓球"), ],# widget=widgets.Select(choices=[(1,"11"),(2,"22"),])widget=widgets.CheckboxSelectMultiple())?6)radio
xdb = fields.ChoiceField(initial=[2,],choices = [(1, "籃球"), (2, "足球"), (3, "乒乓球"), ],# widget=widgets.Select(choices=[(1,"11"),(2,"22"),])widget=widgets.RadioSelect())?
?三.特殊的單選或者多選時,數據源是否能實時更新????/
?
?
?
?
?
?
?
?
?
?
?
?
?
https://www.cnblogs.com/
轉載于:https://www.cnblogs.com/wangyue0925/p/9047425.html
總結
以上是生活随笔為你收集整理的Django 之Form的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javase 超市库存系统
- 下一篇: SpringBoot使用Gradle构建