1. 程式人生 > >Django框架form表單的那些事兒

Django框架form表單的那些事兒

Form那些事兒

建立Form類時,主要涉及到 【欄位】 和 【外掛】,欄位用於對使用者請求資料的驗證,外掛用於自動生成HTML;

 

1:initial

初始值,input框裡面的初始值。

class LoginForm(forms.Form):
    username = forms.CharField(
        min_length=8,
        label="使用者名稱",
        initial="張三"  # 設定預設值
    )
    pwd = forms.CharField(min_length=6, label="密碼
")

2:error_messages

返回的錯誤資訊

class LoginForm(forms.Form):
    username = forms.CharField(
        min_length=8,
        label="使用者名稱",
        initial="張三",
        error_messages={
            "required": "不能為空",         //返回的錯誤資訊
            "invalid": "格式錯誤",
            "min_length": "使用者名稱最短8位
" } ) pwd = forms.CharField(min_length=6, label="密碼")

3:password

class LoginForm(forms.Form):
    ...
    pwd = forms.CharField(
        min_length=6,
        label="密碼",           //密碼框是不可見的 要使用   PasswordInput

      widget=forms.widgets.PasswordInput(attrs={'class': 'c1'}, render_value=True) )

4:radioSelect

class LoginForm(forms.Form):
    username = forms.CharField(
        min_length=8,
        label="使用者名稱",
        initial="張三",
        error_messages={
            "required": "不能為空",
            "invalid": "格式錯誤",
            "min_length": "使用者名稱最短8位"
        }
    )
    pwd = forms.CharField(min_length=6, label="密碼")
    gender = forms.fields.ChoiceField(
        choices=((1, ""), (2, ""), (3, "保密")),
        label="性別",
        initial=3,           // radio 單選框使用RadioSelect方法產生
        widget=forms.widgets.RadioSelect()
    )

5:單選Select

class LoginForm(forms.Form):
    ...
    hobby = forms.fields.ChoiceField(
        choices=((1, "籃球"), (2, "足球"), (3, "雙色球"), ),
        label="愛好",
        initial=3,      // select 單選框使用 Select方法
        widget=forms.widgets.Select()
    )

6:多選Select

class LoginForm(forms.Form):
    ...
    hobby = forms.fields.MultipleChoiceField(
        choices=((1, "籃球"), (2, "足球"), (3, "雙色球"), ),
        label="愛好",
        initial=[1, 3],      // 多選的select 使用的是 SelectMultiple
widget=forms.widgets.SelectMultiple() )

7:單選checkbox

class LoginForm(forms.Form):
    ...
    keep = forms.fields.ChoiceField(
        label="是否記住密碼",
        initial="checked",        // 只有一個 CheckBox
        widget=forms.widgets.CheckboxInput()
    )

8:多選checkbox

class LoginForm(forms.Form):
    ...
    hobby = forms.fields.MultipleChoiceField(
        choices=((1, "籃球"), (2, "足球"), (3, "雙色球"),),
        label="愛好",
        initial=[1, 3],           // 多個checkbox 要使用checkboxSelectMultiple
        widget=forms.widgets.CheckboxSelectMultiple()
    )

校驗

關於手機號碼的校驗

from django.forms import Form
from django.forms import widgets
from django.forms import fields
from django.core.validators import RegexValidator    // 需要匯入的模組
 
class MyForm(Form):
    user = fields.CharField(
        validators=[RegexValidator(r'^[0-9]+$', '請輸入數字'), RegexValidator(r'^1[3-9][0-9]{9}+$', '數字必須以13到19開頭')],
    )