form表單中的資料流動於前後端,需要驗證資料的合法性。django提供了form表單功能用於驗證資料合法性和建立html**。
form表單功能類似於資料庫的模型功能,可看作乙個中介軟體。
-practise
-practise
-book
-forms.py
-urls.py
......
class
registerform
(forms.form)
: uname = forms.charfield(max_length=
20, min_length=
6, label=
'使用者名稱'
) password = forms.charfield(max_length=
8, min_length=6,
widget=forms.passwordinput(attrs=),
error_messages=
, label=
'密碼',)
password_repeat = forms.charfield(widget=forms.passwordinput(
), label=
'確認密碼'
) email = forms.emailfield(label=
'郵件'
, required =
false
)
def
register
(request)
:if request.method ==
'post'
: form = registerform(request.post)
#將registerform類生成例項,傳入模板渲染前端頁面
'註冊成功'
) form = registerform(
)return render(request,
'book/register.html'
,)
action="
" method
="post"
>
}type
="submit"
value
="提交"
>
form
>
該屬性表示form
物件是否繫結資料(即form物件中各個字段是否獲取到了值)
form = registerform(request.post)[in
]: form.is_bound
[out]
:true[in
]: form.cleaned_data
[out]
:'email'
(140292802976152)=
'password'
(140292802428144)=
'qweqwe'
'password_repeat'
(140292701581232)=
'qweqwe'
'uname'
(140292827209656)=
'qqqqqq'
__len__ =
4
請注意,傳遞空字典會建立包含空資料的繫結表單:
>>
> f = contactform(
)>>
> f.is_bound
true
is_valid()方法執行驗證並返回資料是否有效,有效則返回true,反之false.
取上個例子中的form
物件
# form = registerform(request.post)
>>form.is_valid(
)>>
true
該屬性返回字典,裡面包含驗證後的錯誤資訊。字典中,鍵是欄位名稱,值是表示錯誤訊息的字串列表。
#傳送一次錯誤請求, 表單有做驗證password 和 password_repeat必須一致[in
]:form.data
[out]:
'uname'
(140292691724584)=
'qqqqqq'
'password'
(140292691230128)=
'123qwe'
'password_repeat'
(140292691229616)=
'qwe123'
'email'
(140292691723800)=
'[email protected]'[in
]:form.errors.get(
'password_repeat'
)[out]
:<
class
'list'
>
:[validationerror(
['密碼不一致'])
]#即['密碼不一致']
返回類字典物件,包含各個欄位的物件
[
in] form.fields
[out]
'uname'
(140292827209656)=
>
'password'
(140292802428144)=
>
'password_repeat'
(140292701581232)=
>
'email'
(140292802976152)=
>
Django高階 表單 驗證
form.is valid 方法被呼叫時觸發驗證 def is valid self pass 最終層層呼叫會呼叫 self.full clean deffull clean self self.clean fields self.clean form def clean fields 驗證字段 f...
Django高階 中介軟體 初識
中介軟體是dajngo框架對request response響應的輕量級外掛程式系統。作用於使用者和檢視函式之間。project 專案名 project middleware.py 起名隨意 def middleware get response 可以編寫函式中介軟體 僅在專案啟動時執行一次 pri...
Django學習 一 初識Django
相對於python的其他web框架,django 的功能是最完整的,django 定義了服務發布 路由對映 模板程式設計 資料處理的一整套功能。這也意味著django模組之間緊密耦合,開發者需要學習django自已定義的這 整套技術。django的主要特點如下。django是遵循mvc架構的web開...