検証Djangoのフォーム(2)
意味と効果を形成します。
利用者の正当性を確認するには、データ・コンポーネント(正当性チェックデータ)を要求
Djangoのフォーム実装手順:
ユーザの要求を検証するためのテンプレートを作成します。
ジャンゴインポートフォームから
クラスMyFormを(forms.Form):
ユーザー= forms.CharField(......)入力タイプ= 'テキスト'
メール= forms.EmailField(......)入力タイプ= [メール]
PWD = forms.PasswordField(......)入力タイプ= 'パスワード'
クラス:テンプレート、いくつかの検証データの合計
フィールド:認証ユーザーに使用されるフィールド
プラグ:ユーザー= forms.CharField(......ウィジェット=入力ボックス)#様々な箱
確認するためのユーザ認証要求を取得します:
- IS_VALID()TrueまたはFalseを取得します
- 適切なデータを取得する)(クリーン
- エラーは、エラーメッセージが表示されます
フォームの送信:
エラー。0.0フィールド
アヤックス提出します:
errors.as_json()文字列型データ
errors.as_data()データディクショナリ
{ 'ユーザ':[Djangoのオブジェクト()]}
フィールドの一般的なパラメータ:
必要= Trueの場合、必要に応じて(重要なパラメータ)
ウィジェット=なし、HTMLプラグイン
ラベル=なし、表示内容ラベル又はタグを生成する(カーソル表示を用いることもできます)
初期=なし、初期値(重要なパラメータ)
(次のラベルに示す)help_textに=「」、ヘルプ情報
error_messages =なし、エラーメッセージ{「必要」:「が空ではない」、「無効」:「フォーマットエラー」}(重要なパラメータ)
show_hidden_initial = Falseを、現在のプラスプラグと隠されたデフォルト値を有するプラグ(2つのエントリが同じかどうかを試験するために使用することができる)かどうか
バリ= []、カスタム検証ルール(重要なパラメータ)
ローカライズ= Falseの、サポートローカライズするかどうか
無効=編集可能な場合はFalse
label_suffix =なし、サフィックスの内容をラベル
注:{コード= MIN_LENGTHメッセージ=「エラー」}以下のエラー情報の値とすることができるキー(コード)の内部error_messages
CharFieldです(フィールド):
max_length=None,最大长度;min_length=None,最小长度;strip=True,是否移除用户输入的空白;
IntegerFieldと(フィールド):
MAX_VALUE =なし、最大; MIN_VALUE =なし、最小; max_digits =なし、全長; decimal_places =なし、小数ビット長
BaseTemporalField(フィールド):
input_formats =なし、時間の形式。
DateField(BaseTemporalField)フォーマット:2019年12月9日
TimeField(BaseTemporalField)フォーマット:夜06時51分
DateTimeField型(BaseTemporalField)フォーマット:2019年12月9日夜06時51分
DurationField(フィールド)間隔:%D%H:%のM:%S.%F
RegexField(CharFieldです):
REGEX、カスタム正規表現; MAX_LENGTH =なし、最大長; MIN_LENGTH =なし、最小長さ; ERROR_MESSAGE =なし、error_messagesを使用してエラーメッセージを無視= { '無効': '...'}
EmailField(CharFieldです)、同様に使用する同様の方法RegexField
FileFieldに(フィールド):
空のファイルを許可するかどうかallow_empty_file = Falseの、
ImageField(フィールド):
注:PILモジュールを必要とし、二つ以上のPIP3は、枕の辞書をインストールするとき、あなたは2つのことを考慮する必要があります。
- form表单中 enctype = "multipart/form-data" - view函数中 obj = MyForm(request.POST,request.FILES) --->(如果信息和文件都要一起接收要双选)
ChoiceField(フィールド):
選択肢= [(1、 '上海')、(2 '北京')、(3 '成都')]などの選択肢= []オプション
必要な場合は必須=真
ウィジェット=なしプラグインで、デフォルトのプラグインを選択
ラベル=なし、表示内容ラベル又はタグを生成する(カーソル表示を用いることもできます)
初期=なし、初期値(重要なパラメータ)
(次のラベルに示す)help_textに=「」、ヘルプ情報
TypedChoiceField(ChoiceField):
強制=ラムダヴァル:選択された値変換のヴァル
empty_value =「」空のデフォルト値
なMultipleChoiceField():チェックボックス
ComboField(フィールド):
フィールド= []検証の複数を用いて、例:fields.ComboField(フィールド= [fields.CharField(MAX_LENGTH = 20)、fields.EmailField()])
すなわち、20検証の最大長、及び検証メールボックス形式
MultiValueField(フィールド):
PS:抽象クラス、サブクラス、重合はMultiWidgetで使用する辞書を複数の値に一致するように実装することができます
カスタマイズされた検証ブロック手段(自動的に継承を介して必要な複数のフレームを生成します)
FilePathField(ChoiceField)ファイルオプション、ディレクトリのファイルがページに表示されます
パスのフォルダパス
一致=なしマッチング正準
再帰的に再帰的な= Falseの次のフォルダ
ファイルを許可する場合はTrue allow_files =
allow_folders = Falseの場合、フォルダを可能に
必要な場合は必須=真
ウィジェット=なしプラグインで、デフォルトのプラグインを選択
ラベル=なし、表示内容ラベル又はタグを生成する(カーソル表示を用いることもできます)
初期=なし、初期値(重要なパラメータ)
(次のラベルに示す)help_textに=「」、ヘルプ情報
GenericIPAddressField
プロトコル= '' の両方、両方とも、IPv4の、IPフォーマットがサポートIPV6
それがある場合:: FFFF unpack_ipv4 = Falseの解決IPv4アドレス:192.0.2.1、あなたは192.0.2.1、PSに解決することができます:プロトコルは、両方するために有効にする必要があります
SlugField(CharFieldです)、数字、文字、アンダースコア、マイナス(ハイフン)
UUIDField(CharFieldです)UUIDタイプ
注:UUIDはMACを作成するための非繰り返しランダムな文字列であり、現在の時間
例:
<!-- 前端代码块 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/index/" method="POST"> <p>{{ obj.user }}{{ obj.userID }}{{ obj.userChoice }}{{ obj.userChoice2 }}{{ obj.userChoice3 }}</p> <p>{{ obj.usertype }}{{ obj.userChoice4 }}</p> <p>{{ obj.usernull }}{{ obj.userlabel.label_tag }}{{ obj.userlabel }}</p> <p>{{ obj.userinitial }}{{ obj.uservalidators }}{{ obj.userdisable }}{{ obj.usererror }}</p> <p>{{ obj.usermultiple }}</p> <p><input type="submit" value="提交"></p> </form> </body> </html>
#后端代码块 #author:wylkjj #date:2019/12/9 from django.core.validators import RegexValidator from django.shortcuts import render from django import forms from django.forms import widgets #-*- coding:utf-8 -*- class myField(forms.Form): #password属性框 user = forms.CharField(widget=widgets.PasswordInput) #text属性框 userID = forms.CharField(widget=widgets.TextInput(attrs={'class':'txts','placeholder':'hello!'})) #添加属性 #select属性框第一种书写方式:获取到的值是默认的str类型 userChoice = forms.ChoiceField(choices=[(1,'上海'),(2,'北京'),(3,'成都'),]) #select属性框第二种书写方式: 结合IntegerField() 获取int类型值 userChoice2 = forms.CharField(widget=widgets.Select(choices=[(1,'上海'),(2,'北京'),(3,'成都'),])) userChoice3 = forms.IntegerField(widget=widgets.Select(choices=[(1,'上海'),(2,'北京'),(3,'成都'),])) #返回值int属性框 usertype = forms.IntegerField() #数据转换 转换为数字类型,而不是字符串类型,选择框的属性 #互斥select属性框 userChoice4 = forms.IntegerField(widget=widgets.RadioSelect(choices=[(1,'上海'),(2,'北京'),(3,'成都'),])) #是否允许字段值必填(默认情况下required的值为True,不允许字段无值) usernull = forms.CharField(required=True) #显示参数添加光标(label) userlabel = forms.CharField(label="光标") #初始值 userinitial = forms.CharField(initial="ppt") #自定义验证规则(可指定code的名) uservalidators = forms.CharField(initial="ppt",validators=[RegexValidator(r'^[0-9]+$','11111',code='f1')]) #是否可以进行编辑 userdisable = forms.CharField(initial="ppt",disabled=True) #错误信息 usererror = forms.CharField(initial="ppt", max_length=6, validators=[RegexValidator(r'^[0-9]+$','11111',code='f1')], error_messages={'required':'不允许为空', 'invalid':'格式错误', 'f1':'asd', 'max_length':'ChaoGuoZuiDaChangDu'}) #多选框 usermultiple = forms.MultipleChoiceField( initial=[1,2], #初始选中值 choices=[(1,'上海'),(2,'北京'),(3,'成都'),]) def index(request): if request.method == "GET": obj = myField() return render(request, "index.html", {"obj": obj}) elif request.method == "POST": obj = myField(request.POST) obj.is_valid() print(obj.clean()) return render(request, "index.html", {"obj": obj})