1. 程式人生 > >2018.10.27PYTHON_DJANpython裝飾器詳解GO_CLASS118~119

2018.10.27PYTHON_DJANpython裝飾器詳解GO_CLASS118~119

#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='請輸入正確格式的手機號碼!')])