今日は簡単な紹介をお話しましょう、強力なフォーム機能をDjangoの
バイナリ
1 ModelFrom ModelFromのみを継承するために指定したフィールドや他のオプションを宣言する必要があります
(今日の私たちの主なプッシュこの)Froms 2を
1つのフォームは、各フィールドの規定を宣言する必要がある
2 forms.pyファイルベースフォームをForm1、DeclarativeFieldsMetaclass
。3 froms.pyは、関連するフィールドのプロパティを継承し、それが直接、ファイルの属性を呼び出すことができる
アクションFroms 3
自動的に生成するHTMLフォーム要素の正当性を確認するために、フォームデータを
対応に第二のデータ型変換(文字型のデータをPythonのタイプ)
の4つのコンテンツ
メタデータ定義定義のフィールド2メソッドオーバーライド
5シート法の
形態をForm1 =({})
1 form.is_valid():#フォームデータの検証は、正当なリターン真/偽である
形態である場合、1点注余分なフィールドがある限り、対応するフィールドが要件を満たすために、彼らはまだ真を返すことがあり、そこにある
#出力は、間違ったフォーマットがコンテンツタグ付けが含まれている- >辞書:2 form.errorsを
ポイントに注意
1背面:フィールドのエラーメッセージを取りますform.errors.get(「キー」)[インデックス ] - > これは、ここで注意され、エラーメッセージが複数あってもよい
2フロント:フィールドエラーerror.kを取ります <span>のラベル付きey.index
3フロントエンドの後端部は、使用エラー{form.errorsリターン}返す
。必要4体の一般的なエラーの種類、無効
3 form.cleand_data: - >辞書取得フォームデータ#
注1 cleaned_dataタイプフィールドに一致点の値はフィールドの型を定義します。
値2値= form.clean_data.get実施例
3つの記憶データmodel.object.create(** form.cleand_data)
。図4は、確認する必要があり、自動的に生成されたラベルをラベル結合形態を担持する、遠位端を示す
1 form.as_pを:位Pタグ形態は、レンダリングされた
2つのform.key#はフィールドラベル生成取る
制御関連する5つのフィールド
1は、自動的にデフォルトの主キー、指定されていない場合は作成する
2 maxは/ MIN_LENGTH制御レングス制限、CharFiled必須
ではない3必要なニーズのデフォルトを空の
4 error_messagesは、カスタム例えばエラー:error_messages = {「必要/ vaild」:「あなたの名前を入力してください」}( 実際に使用されていない)、辞書には、独立変数を確立することができます
6元データ
クラスのMetaクラスを定義し
、データベースに「」= DB_Tableのを実際のテーブル名
7つのサンプルコード
1つのモデルモジュール
クラスのユーザー(models.Model):
ユーザー= models.CharField(max_lengthを= 5)
パスワード= models.CharField(max_lengthを= 15)
、電子メール= models.CharField(max_lengthを= 12)
クラスのMeta:
DB_Tableの= 'ユーザーズ
2つのビュー模块
デフ(リクエスト)登録:
request.method == 'POST'の場合:
biaodan = UserFrom(request.POST)
biaodan.is_valid場合():
User.objects.createは(** biaodan.cleaned_data)
('WAEを')はHttpResponseを返す
他:
=ユーザーフォームのフォーム()
(地元の人々 ()については、「register.html」リクエスト)レンダリングを返す
他:
)(ユーザーフォーム=を形成し
、地元の人々についてのローカル変数に(地元の人々 ()について、要求、「register.html」)レンダリングを返す#
3フォームモジュール
クラスUserFrom(forms.Form):
ユーザforms.CharField =(= 15 MAX_LENGTH、ラベル= 'ユーザ名'、error_messages = { "必須" : " ユーザ名ニーズが必要"})
パスワード= forms.CharField(MAX_LENGTH = 10 、ラベル= 'パスワード'、ウィジェット= widgets.PasswordInput(ATTRS = { 'クラス': 'コントロールフォーム'}))
メールに= forms.CharField(= 10 MAX_LENGTH、ラベル= 'メールボックス'))
4フロントエンドコード
レンダリング1
<フォームアクション= "/レジスタ/" METHOD = "POST">
{%}%csrf_token
の<div>
名:{{form.user}} <スパン > {{エラー。ユーザー}} </ span>を
</ div>
<div>の
密码:{{form.password}} <スパン> {{error.password}} </スパン>
</ div>
<div>
邮箱:{{form.email}} <スパン> {{error.email}} < /スパン>
</ div>
<div>
<INPUT TYPE = "提出"値= "提交" />
</ div>
</ FORM>
渲染方法2
<フォームアクション= "/レジスタ/" METHOD = "POST">
{%csrf_token%}
{日出願形態における%用%}
{%ENDFOR%}
渲染方法3
<FORM ACTION = "/レジスタ/" METHOD = "POST">
{%csrf_token%}
{フォーム%で提出用%}
< DIV CLASS = "フォーム列">
<ラベル> {{filed.label}} </ラベル>//表示ラベルフィールドを指定
{{日出願}} //表示フィールド
エラーメッセージ表示// {{filed.errors}}
</ div>
{%} ENDFOR%を
<INPUTタイプは=「送信」>
</フォーム>
9を加え
2は二層の認証メカニズムを1つの遠位フォーム
端を2カスタムパッケージ重量の制約の表示属性
ウィジェット= widgets.type(ATTRS = {「クラス」:」フォームコントロールを「})