django獲取cleaned data屬性失敗

2022-08-27 16:54:15 字數 1133 閱讀 5516

cleaned_data屬性是呼叫了clean()方法之後才有的,如果在表單驗證中使用  clean_欄位名  方式定義了某個字段清洗函式,那麼django會優先呼叫這個函式,最後呼叫clean()函式,如下:

def clean_mobile(self):

mobile = self.cleaned_data['mobile'] #這樣子寫有時會取不到cleaned_data屬性值,原因定義自定義的清洗函式對某些字段進行清洗後,該字段將會從cleaned_data屬性中刪除

#從而導致在cleaned_data屬性中取不到該字段的值

呼叫清洗函式,其實質就是將表單型別轉化為python資料型別,假如表單中有兩個字段,分別是mobile,password,在表單類中定義了clean_mobile清洗欄位mobile(即由clean_mobile()方法完成欄位mobile由表單型別轉化為python資料型別)。

在表單資料清洗的過程中是先呼叫clean()方法在呼叫clean_mobile()方法,得到cleaned_data屬性,該屬性裡有兩個鍵,分別是mobile,password。由於自定義了清洗函式clean_mobile會覆蓋clean()(即mobile欄位由clean_mobile()方法負責清洗,完成表單型別到python資料型別的轉換),而且也會從cleaned_data屬性中刪除該欄位,即cleaned_data屬性中只含有password這乙個字段,可通過login_form.cleaned_data['password']取得這個值。data屬性包含了表單的所有字段值即data屬性裡儲存了mobile,password的值,如下:

正確示例:

以上**只是告訴讀者可以使用data 屬性取得表單資料。    也可以使用形如:register_post_form.password.value 的形式在前端獲取表單資料。

注:讀者可使用斷點方式檢視表單物件含有的字段。

django官方文件相關介紹:

django獲取引數

獲取請求中所有的引數 def vue get request print request.get request.get dict data response data print 得到的get引數 dict data jsonify返回乙個json格式的資料 這裡也可以改寫成對資料庫的增刪改查後,...

Django獲取全域性request

某些情景下,我們需要在任意函式內獲取request,但是django並沒有給我們提供獲取全域性request的方法。當request到達檢視函式前,會經過中介軟體攔截。我們可以自己寫乙個中介軟體,並設計成單例模式。然後在中介軟體中取得當前request物件,並儲存在中介軟體物件中。middlewar...

django獲取請求引數

需求 假設使用者訪問127.0.0.1 user 1 2,你想獲取1,2。應該怎麼操作呢?1 未命名引數 位置引數 在專案下的urls.py下增加設定 url r user d d views.index 在user.views的index檢視中 def index request,a,b 接受的引...