[フラスコ]パイソン最初の章を学ぶ - 6.0 WTFのフォームデータベース

WTFフォーム 

wtf.py

flask_wtfのインポートFlaskForm 

から wtform インポートStringField、PASSWORDFIELD、SubmmitField 



App.configファイル[ " SECRET_KEY " ] = " 12345678 " 
クラスレジスタ(flaskform):
  ユーザ名 = StringField(" 用户名:"、render_kw = { " プレースホルダ"" 占位符" })

  パスワード = PASSWORDFIELD(" 密码:" 

  パスワード2 = PassswordField(" 确认密码。"

  提出 = SubmitField(" 提交"

 

フラスコインポートフラスコrender_template
 から flask_wtfのインポートFlaskForm
 から wtformsはインポートStringField、PASSWORDFIELD、SubmitField 

アプリ =フラスコ(__name__ 


クラス:(FlaskForm)レジスタ = StringField(" 用户名:"、render_kw = { ' プレースホルダ'我是占位符" })
    パスワード = PASSWORDFIELD(" 密码:" 
    パスワード2 = PASSWORDFIELD("确认密码" 
    提出 = SubmitField(" 注册" 


@ app.route(" / "メソッド= [ " POST " " GET " ])
 デフインデックス():
    registerform = 登録()
     の戻り render_template(" demo4_template.html "、フォーム= registerform)


の場合 __name__ == ' __main__ ' 
    app.run()
wtf.py
<!DOCTYPE HTML > 
< HTML のlang = "EN" > 
< ヘッド> 
    < メタのcharset = "UTF-8" > 
    < タイトル>タイトル</ タイトル> 
</ ヘッド> 
< ボディ> 
{#< フォームメソッド= "POST" > # } 
{#     < ラベル>用户名:</ ラベル> < 入力タイプ= "テキスト" 名前=」= "ユーザー名を入力してください" > < BR /> #} 
{#     < ラベル>パスワード:</ ラベル> < INPUTの種類= "パスワード" 名前= "パスワード" プレースホルダ= "パスワードを入力してください" > < BR /> } 
{#     < ラベル>パスワードの確認:</ ラベル> < 入力タイプ= "パスワード" 名前= "パスワード2" プレースホルダ= "確認パスワードを入力してください。" > < BR />#} 
{#     < 入力タイプ= "送信"= "注册" > #} 
{##} 
{#</ フォーム> #}
      < BR /> 
     < BR /> 
     < BR /> 
< フォームメソッド= "POST" > 
    {{form.username.label}} { {form.username}} < BR /> 
    {{form.password.label}}、{{form.password}} < BR /> 
    {{form.password2.label}}、{{form.password2}} < BR /> 
    {{form.submit}} 

</ フォーム> 

</ ボディ>
</HTML >
demo4_teamplate.html

 

CSRF 

  1. クライアントは、リアへのインタフェースデータを要求すると、後端がクッキーcsrf_token応答の値に設定されています
  2. 隠されたフォームフィールド値の形式で追加することもcsrf_tokenです
  3. ユーザーがクリックを送信すると、私たちはバックグラウンドに要求を開始これら2つの値をもたらします
  4. バックエンドには、次へのリクエストがいくつかのイベントになります受け取ります:
    • クッキーcsrf_tokenから削除
    • 隠されたcsrf_tokenのフォームデータの値から削除
    • 比較します
  5. 2後などの比較値があれば正常でない要求を表す、同じ以下を取らない場合、それは、通常の要求を表す、次のステップが実行されません

おすすめ

転載: www.cnblogs.com/oscarli/p/12070760.html