1. 程式人生 > 其它 >Django之Forms元件之鉤子函式(HOOK)

Django之Forms元件之鉤子函式(HOOK)

 1 """
 2 在特定的節點自動觸發完成響應操作
 3 
 4 鉤子函式在forms元件中就類似於第二道關卡,能夠讓我們自定義校驗規則
 5 
 6 在forms元件中有兩類鉤子
 7     1.區域性鉤子
 8         當你需要給單個欄位增加校驗規則的時候可以使用
 9     2.全域性鉤子
10       當你需要給多個欄位增加校驗規則的時候可以使用
11 """
12 # 實際案例
13 
14 # 1.校驗使用者名稱中不能含有666        只是校驗username欄位  區域性鉤子  def clean_xxx(self)
15 
16 # 2.校驗密碼和確認密碼是否一致       password confirm兩個欄位    全域性鉤子  def cleaned(self)
17 18 # 鉤子函式 在類裡面書寫方法即可 19 from django import forms 20 class MyForm(forms.Form): 21 username = forms.CharField(min_length=3,max_length=8, label='使用者名稱',error_messages={ 22 'min_length':'密碼最少3位', 23 'max_length':'密碼多多8位', 24 '
required':'使用者名稱不能為空', 25 }) 26 password = forms.CharField(min_length=3,max_length=8, label='密碼', 27 error_messages={ 28 'min_length':'密碼最少3位', 29 'max_length':'密碼多多8位
', 30 'required':'密碼不能為空', 31 }) 32 confirm_password = forms.CharField(min_length=3,max_length=8, label='密碼', 33 error_messages={ 34 'min_length':'確認密碼最少3位', 35 'max_length':'確認密碼多多8位', 36 'required':'確認密碼不能為空', 37 }) 38 email = forms.EmailField(label='郵箱',error_messages={ 39 'invalid':'郵箱格式錯誤', 40 'required':'郵箱地址不能為空', 41 }) 42 # 區域性鉤子 43 def clean_username(self): 44 # 獲取到使用者名稱 45 username = self.cleaned_data.get('username') 46 if '666' in username: 47 # 提示前端展示錯誤資訊 48 self.add_error('username','光喊666是不行滴~') 49 # 將鉤子函式鉤去出來資料再放回去,區域性鉤子返回給校驗的欄位 50 return username 51 52 # 全域性鉤子 53 def clean(self): 54 password = self.cleaned_data.get('password') 55 confirm_password = self.cleaned_data.get('confirm_password') 56 if not confirm_password == password: 57 self.add_error('confirm_password','兩次密碼不一致') 58 # 將鉤子函式鉤出來資料再放回去,全域性的返回給cleaned_data 59 return self.cleaned_data 60