2018.10.27PYTHON_DJANpython裝飾器詳解GO_CLASS118~119
阿新 • • 發佈:2018-12-17
#CLASS118
用表單驗證資料
常用的Field: 使用Field可以是對資料驗證的第一步。你期望這個提交上來的資料是什麼型別,那麼就使用什麼型別的Field。
CharField:
用來接收文字。 引數:
- max_length:這個欄位值的最大長度。
- min_length:這個欄位值的最小長度。
- required:這個欄位是否是必須的。預設是必須的。
- error_messages:在某個條件驗證失敗的時候,給出錯誤資訊。
EmailField:
用來接收郵件,會自動驗證郵件是否合法。 錯誤資訊的key:required、invalid。
class MyForm(BaseForm): email = forms.EmailField(error_messages={"invalid":"請輸入正確的郵箱!"}) price = forms.FloatField(error_messages={"invalid":"請輸入浮點型別!"}) personal_website = forms.URLField(error_messages={"invalid":"請輸入正確格式的個人網站!",'required':"請輸入個人網站!"}) email = forms.CharField(validators=[validators.EmailValidator(message='請輸入正確格式的郵箱!')])
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="" method="post"> {# <input type="text" name="email">#} {# <input type="text" name="price">#} {# <input type="text" name="personal_website">#} <input type="text" name="telephone"> <input type="submit" value="提交"> </form> </body> </html>
FloatField:
用來接收浮點型別,並且如果驗證通過後,會將這個欄位的值轉換為浮點型別。 引數:
- max_value:最大的值。
- min_value:最小的值。 錯誤資訊的key:required、invalid、max_value、min_value。
IntegerField: 用來接收整形,並且驗證通過後,會將這個欄位的值轉換為整形。 引數:
- max_value:最大的值。
- min_value:最小的值。 錯誤資訊的key:required、invalid、max_value、min_value。
案例:
class MyForm(BaseForm): telephone = forms.CharField(validators=[validators.RegexValidator(r'1[345678]\d{9}',message='請輸入正確格式的手機號碼!')])
URLField:
用來接收url格式的字串。 錯誤資訊的key:required、invalid。
案例:
class MyForm(BaseForm):
personal_website = forms.URLField(error_messages={"invalid":"請輸入正確格式的個人網站!",'required':"請輸入個人網站!"})
CLASS 119
常用驗證器: 在驗證某個欄位的時候,可以傳遞一個validators引數用來指定驗證器,進一步對資料進行過濾。驗證器有很多,但是很多驗證器我們其實已經通過這個Field或者一些引數就可以指定了。比如EmailValidator,我們可以通過EmailField來指定,比如MaxValueValidator,我們可以通過max_value引數來指定。以下是一些常用的驗證器:
MaxValueValidator:驗證最大值。 MinValueValidator:驗證最小值。 MinLengthValidator:驗證最小長度。 MaxLengthValidator:驗證最大長度。 EmailValidator:驗證是否是郵箱格式。 URLValidator:驗證是否是URL格式。 RegexValidator:如果還需要更加複雜的驗證,那麼我們可以通過正則表示式的驗證器:RegexValidator。比如現在要驗證手機號碼是否合格,那麼我們可以通過以下程式碼實現:
class MyForm(forms.Form):
telephone = forms.CharField(validators=[validators.RegexValidator("1[345678]\d{9}",message='請輸入正確格式的手機號碼!')])