成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

DjangoForm和ModelForm組件

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

Django Form和ModelForm組件

login.html

Django Form和ModelForm組件

使用form組件實(shí)現(xiàn)注冊功能

views.py

先定義好一個RegForm類:

Django Form和ModelForm組件

再寫一個視圖函數(shù):

Django Form和ModelForm組件

login2.html

Django Form和ModelForm組件

看網(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框里面的初始值

Django Form和ModelForm組件

error_messages

重寫錯誤信息。

Django Form和ModelForm組件

password

Django Form和ModelForm組件

radioSelect

單radio值為字符串

Django Form和ModelForm組件

單選Select

Django Form和ModelForm組件

多選Select

Django Form和ModelForm組件

單選checkbox

Django Form和ModelForm組件

多選checkbox

Django Form和ModelForm組件

choice字段注意事項(xiàng)

在使用選擇標(biāo)簽時,需要注意choices的選項(xiàng)可以配置從數(shù)據(jù)庫中獲取,但是由于是靜態(tài)字段?獲取的值無法實(shí)時更新,需要重寫構(gòu)造方法從而實(shí)現(xiàn)choice實(shí)時更新。

方式一:

Django Form和ModelForm組件

方式二:

Django Form和ModelForm組件

Django Form所有內(nèi)置字段

Django Form和ModelForm組件

字段校驗(yàn)

RegexValidator驗(yàn)證器

Django Form和ModelForm組件

自定義驗(yàn)證函數(shù)

Django Form和ModelForm組件

Hook方法

除了上面兩種方式,我們還可以在Form類中定義鉤子函數(shù),來實(shí)現(xiàn)自定義的驗(yàn)證功能。

局部鉤子

我們在Fom類中定義 clean_字段名() 方法,就能夠?qū)崿F(xiàn)對特定字段進(jìn)行校驗(yàn)。

舉個例子:

Django Form和ModelForm組件

全局鉤子

我們在Fom類中定義 clean() 方法,就能夠?qū)崿F(xiàn)對字段進(jìn)行全局校驗(yàn)。

Django Form和ModelForm組件

補(bǔ)充進(jìn)階

應(yīng)用Bootstrap樣式

Django Form和ModelForm組件

批量添加樣式

可通過重寫form類的init方法來實(shí)現(xiàn)。

Django Form和ModelForm組件

ModelForm

通常在Django項(xiàng)目中,我們編寫的大部分都是與Django 的模型緊密映射的表單。 舉個例子,你也許會有個Book 模型,并且你還想創(chuàng)建一個form表單用來添加和編輯書籍信息到這個模型中。 在這種情況下,在form表單中定義字段將是冗余的,因?yàn)槲覀円呀?jīng)在模型中定義了那些字段。

基于這個原因,Django 提供一個輔助類來讓我們可以從Django 的模型創(chuàng)建Form,這就是ModelForm。

modelForm定義

form與model的終極結(jié)合。

Django Form和ModelForm組件

class Meta下常用參數(shù):

Django Form和ModelForm組件

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í)例:

Django Form和ModelForm組件

本文標(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)

網(wǎng)站優(yōu)化排名
开远市| 阳山县| 文水县| 西盟| 峨山| 金阳县| 育儿| 界首市| 微山县| 鹤庆县| 拉孜县| 济宁市| 贺州市| 商城县| 清苑县| 靖江市| 成都市| 辰溪县| 阜城县| 石泉县| 溧阳市| 苗栗市| 汤原县| 永登县| 鹿泉市| 包头市| 霍林郭勒市| 洪洞县| 务川| 周宁县| 县级市| 鄂尔多斯市| 晋宁县| 抚松县| 玉田县| 金寨县| 固始县| 安溪县| 溧阳市| 军事| 遵化市|