Django 52 Form表單之widget部件

2021-09-19 12:38:10 字數 2048 閱讀 1523

概述

widgets是乙個配置forms元件的引數配置(標籤型別,屬性等)

widget可以為form渲染模板提供相應支援,可以在widget中指定標籤的型別(預設textinput)和屬性(值) attrs

attrs後面接的屬性以及屬性值為鍵值對形式

如:pwd = forms.charfield(max_length=32,label="密碼",widget=forms.passwordinput(attrs=))

widget部件

處理 input 的部件

textinput   

numberinput

emailinput

urlinput

passwordinput

hiddeninput

dateinput

datetimeinput

timeinput

textarea

selector 和 checkbox 部件

checkboxinput

select

nullbooleanselect

radioselect

checkboxselectmultiple

file upload 部件

fileinput

clearablefileinput

合成部件

multiplehiddeninput

splitdatetimewidget

splithiddendatetimewidget

selectdatewidget

所有內建的部件類都是繼承自widget和multiwidge ,可以繼承它們實現自己的部件功能

以 passwordinput為例

前面我們定義的form表單,輸入時密碼是明文顯示的,即輸入的密碼在頁面直觀顯示,這種比較隱秘的資訊,一般都是要做處理的。widget提供了passwordinput標籤用來表示密碼的輸入。

修改我們定義的登錄檔單

from django import forms

class registerform(forms.form):

username = forms.charfield(max_length=32, label="使用者名稱")

# widget=forms.passwordinput()指定password這個字元輸入標籤為密碼格式(頁面輸入時不會明文顯示)

password = forms.charfield(max_length=32, label="密碼",widget=forms.passwordinput())

nickname = forms.charfield(max_length=32, label="姓名")

phone = forms.charfield(max_length=11, label="**")

email = forms.emailfield(label="郵箱")

def clean_username(self): # 定義username的校驗方法

username = self.cleaned_data["username"] # 獲取到輸入的username

if len(username) < 6:

raise forms.validationerror("使用者名稱長度不能小於6位") # 自定義異常

if username.isdigit() == true:

raise forms.validationerror("使用者名稱不能全為數字")

return username

啟動狀態訪問在頁面輸入密碼,不會明文顯示了

Django學習筆記之form表單

表單是通過類實現的,繼承自forms.form,然後在裡面定義要驗證的字段.在表單中,建立欄位跟模型是一模一樣的,但是沒有null true或者blank true等這幾種引數了,有的引數是required true false.使用is valid 方法可以驗證使用者提交的資料是否合法,而且htm...

django學習 Form表單

在驗證某個欄位的時候,可以傳遞乙個validators引數用來指定驗證器,對資料進行進一步的過濾。驗證器有很多,但是很多驗證器我們其實已經通過這個field或者一些引數就可以指定了。比如emailvalidator,我們可以通過emailfield來指定,比如maxvaluevalidator,我們...

Django之form表單提交並驗證

1.提交的時候會報錯 2.需要在setting裡面注釋掉一句話,關閉跨站請求檢查。3.注釋掉以後,理論上就不報錯了。可我還是卡殼了。4.通過在網上找方法,修復錯誤。原因 表單action欄位沒有以 結尾,將action 修改為 action a b 即可修復。將action欄位修正如下 這裡需要說明...