您好,登錄后才能下訂單哦!
Form介紹?
我們之前在HTML頁面中利用form表單向后端提交數據時,都會寫一些獲取用戶輸入的標簽并且用form標簽把它們包起來。
與此同時我們在好多場景下都需要對用戶的輸入做校驗,比如校驗用戶是否輸入,輸入的長度和格式等正不正確。如果用戶輸入的內容有錯誤就需要在頁面上相應的位置顯示對應的錯誤信息.。
Django form組件就實現了上面所述的功能。
總結一下,其實form組件的主要功能如下:
生成頁面可用的HTML標簽
對用戶提交的數據進行校驗
保留上次輸入內容
普通方式手寫注冊功能
views.py
login.html
使用form組件實現注冊功能
views.py
先定義好一個RegForm類:
再寫一個視圖函數:
login2.html
看網頁效果發現 也驗證了form的功能:
?前端頁面是form類的對象生成的? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? -->生成HTML標簽功能
?當用戶名和密碼輸入為空或輸錯之后 頁面都會提示? ? ? ? -->用戶提交校驗功能
?當用戶輸錯之后 再次輸入 上次的內容還保留在input框? ?-->保留上次輸入內容
Form那些事兒
常用字段與插件
創建Form類時,主要涉及到 【字段】 和 【插件】,字段用于對用戶請求數據的驗證,插件用于自動生成HTML;
initial
初始值,input框里面的初始值
error_messages
重寫錯誤信息。
password
radioSelect
單radio值為字符串
單選Select
多選Select
單選checkbox
多選checkbox
choice字段注意事項
在使用選擇標簽時,需要注意choices的選項可以配置從數據庫中獲取,但是由于是靜態字段?獲取的值無法實時更新,需要重寫構造方法從而實現choice實時更新。
方式一:
方式二:
Django Form所有內置字段
字段校驗
RegexValidator驗證器
自定義驗證函數
Hook方法
除了上面兩種方式,我們還可以在Form類中定義鉤子函數,來實現自定義的驗證功能。
局部鉤子
我們在Fom類中定義 clean_字段名() 方法,就能夠實現對特定字段進行校驗。
舉個例子:
全局鉤子
我們在Fom類中定義 clean() 方法,就能夠實現對字段進行全局校驗。
補充進階
應用Bootstrap樣式
批量添加樣式
可通過重寫form類的init方法來實現。
ModelForm
通常在Django項目中,我們編寫的大部分都是與Django 的模型緊密映射的表單。 舉個例子,你也許會有個Book 模型,并且你還想創建一個form表單用來添加和編輯書籍信息到這個模型中。 在這種情況下,在form表單中定義字段將是冗余的,因為我們已經在模型中定義了那些字段。
基于這個原因,Django 提供一個輔助類來讓我們可以從Django 的模型創建Form,這就是ModelForm。
modelForm定義
form與model的終極結合。
class Meta下常用參數:
ModelForm的驗證
與普通的Form表單驗證類型類似,ModelForm表單的驗證在調用is_valid() 或訪問errors 屬性時隱式調用。
我們可以像使用Form類一樣自定義局部鉤子方法和全局鉤子方法來實現自定義的校驗規則。
如果我們不重寫具體字段并設置validators屬性的化,ModelForm是按照模型中字段的validators來校驗的。
save()方法
每個ModelForm還具有一個save()方法。 這個方法根據表單綁定的數據創建并保存數據庫對象。 ModelForm的子類可以接受現有的模型實例作為關鍵字參數instance;如果提供此功能,則save()將更新該實例。 如果沒有提供,save() 將創建模型的一個新實例:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。