django form 物件is bound屬性

2021-09-07 17:27:31 字數 1743 閱讀 1859

問題:

如果判斷乙個form例項中有沒有資料?

bug方法:

通過form例項的is_valid()方法來驗證

1、form類的定義

class

yourname(form):

your_name = charfield(max_length=10)

2、template直接渲染的上下文中的msg變數

}

3、view中的**

def

show_messsage(request):

f =yourname()

return render(request,'

learning/message.html

',context=

".format(f.is_valid())})

檢視效果

可以看到頁面中顯示的是「the form has data = false」 看起來好像是判斷正確了、但是問題並沒有結束;這個「false」

只是乙個巧合。

我們把**改一下用來模擬一下使用者的提交,假設使用者提交了「12345678901234」 注意這裡有14個字元。

可以看到資料是有的、可能通過is_valid()是分辨不出來的。

正確的做法:

1、通過form物件的is_bound屬性來分辨form中是否有資料

is_bound 當form物件中有資料時能正確判斷資料是有的、而這個有與資料是否能通過校驗無關。

2、通過乙個沒有資料的form例項測試is_bound的效果

總結:

form物件的is_bound用於測試form中有沒有資料、它並不關心資料能不能通過校驗。

django form表單驗證

常用的field 使用field可以是對資料驗證的第一步。你期望這個提交上來的資料是什麼型別,那麼就使用什麼型別的field。charfield 用來接收文字。引數 max length 這個字段值的最大長度。min length 這個字段值的最小長度。required 這個字段是否是必須的。預設是...

Django Form 所有內建字段

field required true,是否允許為空 widget none,html外掛程式 label none,用於生成label標籤或顯示內容 initial none,初始值 help text 幫助資訊 在標籤旁邊顯示 error messages none,錯誤資訊 validator...

DjangoForm 提交驗證

1.建立模版 class loginform forms.form 2.將請求交給模版,建立乙個物件 obj loginform request.post 3.進行驗證 obj.is valid 4.獲取正確的資訊 obj.clean 5.獲取錯誤的資訊 obj.errors 建立乙個 static...