Django-form-processing
Django-フォーム処理
Djangoでフォームを作成することは、モデルを作成することに本当に似ています。 ここでも、Djangoクラスから継承する必要があり、クラス属性はフォームフィールドになります。 myappフォルダーに forms.py ファイルを追加して、アプリフォームを含めましょう。 ログインフォームを作成します。
上記のように、フィールドタイプはhtmlレンダリングの「ウィジェット」引数を取ることができます。この場合、パスワードは表示せずに非表示にします。 Djangoには他にも多くのウィジェットがあります:日付の DateInput 、チェックボックスの CheckboxInput など。
ビューでフォームを使用する
HTTPリクエストには、GETとPOSTの2種類があります。 Djangoでは、ビューにパラメーターとして渡されるリクエストオブジェクトには、リクエストのタイプが設定される「メソッド」という属性があり、POST経由で渡されるすべてのデータにはrequest.POST辞書経由でアクセスできます。
myapp/views.pyでログインビューを作成しましょう-
ビューには、 loggedinl を通じて投稿されたログインフォームの結果が表示されます。 テストするには、最初にログインフォームテンプレートが必要です。 それをloginlと呼びましょう。
テンプレートにログインフォームが表示され、上記のログインビューに結果が投稿されます。 おそらく、テンプレート内のタグに気付いたでしょう。これは、サイトでのクロスサイトリクエストフォージェリ(CSRF)攻撃を防ぐためです。
ログインテンプレートを取得したら、フォームの処理後にレンダリングされるlogininlテンプレートが必要です。
さて、開始するにはURLのペアが必要です:myapp/urls.py
「/myapp/connection」にアクセスすると、次のloginlテンプレートがレンダリングされます-
フォーム投稿では、フォームは有効です。 私たちの場合、2つのフィールドに必ず入力してください。
ユーザー名がポロで、パスワードを忘れた場合。 次のメッセージが表示されます-
独自のフォーム検証の使用
上記の例では、フォームを検証するとき-
Djangoの自己フォーム検証エンジンのみを使用しました。この場合、フィールドが必須であることを確認するだけです。 次に、ログインしようとしているユーザーがDreamrealエントリとしてDBに存在することを確認してみましょう。 このために、myapp/forms.pyを-に変更します
これで、「is_valid」メソッドを呼び出した後、ユーザーがデータベースにいる場合にのみ正しい出力が得られます。 フォームのフィールドを確認する場合は、「clean_」で始まるメソッドを追加してから、フィールド名をフォームクラスに追加します。 forms.ValidationErrorを発生させることは重要です。