Form介紹?
創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計制作的公司,為廣大用戶提供了網(wǎng)站制作、成都網(wǎng)站制作,成都網(wǎng)站設(shè)計,1元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián)公司,貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
我們之前在HTML頁面中利用form表單向后端提交數(shù)據(jù)時,都會寫一些獲取用戶輸入的標(biāo)簽并且用form標(biāo)簽把它們包起來。
與此同時我們在好多場景下都需要對用戶的輸入做校驗(yàn),比如校驗(yàn)用戶是否輸入,輸入的長度和格式等正不正確。如果用戶輸入的內(nèi)容有錯誤就需要在頁面上相應(yīng)的位置顯示對應(yīng)的錯誤信息.。
Django form組件就實(shí)現(xiàn)了上面所述的功能。
總結(jié)一下,其實(shí)form組件的主要功能如下:
生成頁面可用的HTML標(biāo)簽
對用戶提交的數(shù)據(jù)進(jìn)行校驗(yàn)
保留上次輸入內(nèi)容
普通方式手寫注冊功能
views.py
login.html
使用form組件實(shí)現(xiàn)注冊功能
views.py
先定義好一個RegForm類:
再寫一個視圖函數(shù):
login2.html
看網(wǎng)頁效果發(fā)現(xiàn) 也驗(yàn)證了form的功能:
?前端頁面是form類的對象生成的? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -->生成HTML標(biāo)簽功能
?當(dāng)用戶名和密碼輸入為空或輸錯之后 頁面都會提示? ? ? ? -->用戶提交校驗(yàn)功能
?當(dāng)用戶輸錯之后 再次輸入 上次的內(nèi)容還保留在input框? ?-->保留上次輸入內(nèi)容
Form那些事兒
常用字段與插件
創(chuàng)建Form類時,主要涉及到 【字段】 和 【插件】,字段用于對用戶請求數(shù)據(jù)的驗(yàn)證,插件用于自動生成HTML;
initial
初始值,input框里面的初始值
error_messages
重寫錯誤信息。
password
radioSelect
單radio值為字符串
單選Select
多選Select
單選checkbox
多選checkbox
choice字段注意事項(xiàng)
在使用選擇標(biāo)簽時,需要注意choices的選項(xiàng)可以配置從數(shù)據(jù)庫中獲取,但是由于是靜態(tài)字段?獲取的值無法實(shí)時更新,需要重寫構(gòu)造方法從而實(shí)現(xiàn)choice實(shí)時更新。
方式一:
方式二:
Django Form所有內(nèi)置字段
字段校驗(yàn)
RegexValidator驗(yàn)證器
自定義驗(yàn)證函數(shù)
Hook方法
除了上面兩種方式,我們還可以在Form類中定義鉤子函數(shù),來實(shí)現(xiàn)自定義的驗(yàn)證功能。
局部鉤子
我們在Fom類中定義 clean_字段名() 方法,就能夠?qū)崿F(xiàn)對特定字段進(jìn)行校驗(yàn)。
舉個例子:
全局鉤子
我們在Fom類中定義 clean() 方法,就能夠?qū)崿F(xiàn)對字段進(jìn)行全局校驗(yàn)。
補(bǔ)充進(jìn)階
應(yīng)用Bootstrap樣式
批量添加樣式
可通過重寫form類的init方法來實(shí)現(xiàn)。
ModelForm
通常在Django項(xiàng)目中,我們編寫的大部分都是與Django 的模型緊密映射的表單。 舉個例子,你也許會有個Book 模型,并且你還想創(chuàng)建一個form表單用來添加和編輯書籍信息到這個模型中。 在這種情況下,在form表單中定義字段將是冗余的,因?yàn)槲覀円呀?jīng)在模型中定義了那些字段。
基于這個原因,Django 提供一個輔助類來讓我們可以從Django 的模型創(chuàng)建Form,這就是ModelForm。
modelForm定義
form與model的終極結(jié)合。
class Meta下常用參數(shù):
ModelForm的驗(yàn)證
與普通的Form表單驗(yàn)證類型類似,ModelForm表單的驗(yàn)證在調(diào)用is_valid() 或訪問errors 屬性時隱式調(diào)用。
我們可以像使用Form類一樣自定義局部鉤子方法和全局鉤子方法來實(shí)現(xiàn)自定義的校驗(yàn)規(guī)則。
如果我們不重寫具體字段并設(shè)置validators屬性的化,ModelForm是按照模型中字段的validators來校驗(yàn)的。
save()方法
每個ModelForm還具有一個save()方法。 這個方法根據(jù)表單綁定的數(shù)據(jù)創(chuàng)建并保存數(shù)據(jù)庫對象。 ModelForm的子類可以接受現(xiàn)有的模型實(shí)例作為關(guān)鍵字參數(shù)instance;如果提供此功能,則save()將更新該實(shí)例。 如果沒有提供,save() 將創(chuàng)建模型的一個新實(shí)例:
本文標(biāo)題:DjangoForm和ModelForm組件
URL標(biāo)題:http://jinyejixie.com/article14/ijjige.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站排名、品牌網(wǎng)站制作、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)