五十四:カスタムフォームバリデータのWTFormsフォーム検証

 

カスタム認証用のフィールドを形成したい場合は、検証の分野分離する必要があります
(提出セルフ)validate_フィールド名:、1のルールという名前のメソッドを定義し
、この方法では、2 filed.dataフィールドの値を取得
wtforms.validators.ValidationError(異常情報):検証が失敗した場合、あなたは例外をスローする必要があり、認証が成功した場合、あなたは、何もする必要はありませんが、3

<!DOCTYPE HTML> 
<HTML LANG = "EN">
<HEAD>
<メタ文字コード= "UTF-8">
<タイトル>注册</ TITLE>
</ HEAD>
<BODY>
<フォームアクション= "#"方法= "ポスト">
<表>
<TBODY>
<TR>
<TD>验证码:</ TD>
<TD>の<input type = "text"の名= "キャプチャ"> </ TD>
</ TR>
<TR>
<TD> </ TD>
<TD>の<input type = "提出"値= "点击提交"> </ TD>
</ TR>
</ TBODY>
</ TABLE>
</ FORM>
</ BODY>
</ HTML>

StringField、からインポートをForm1 WTForms 
wtforms.validatorsからは、長さ、ValidationErrorをインポート


クラスRegistForm(Form1に)
キャプチャ= StringField(バリ= [長さ(4 ,. 4、=メッセージ) 'コードは、4'])

DEF validate_captcha(セルフ、 )提出された:#カスタムバリデータ:validate_フィールド名
を印刷(filed.data)
)(タイプ(提出を印刷)

:!filed.data = '1234'の場合は
、時間の昇給ValidationErrorを( 'エラーコード')#認証が失敗しました例外をスロー

フラスコインポートフラスコ、要求、render_templateから

フォームからインポートRegistForm

アプリ=フラスコ(__ name__)


@ app.route( '/レジスト/'、メソッド= [ 'GET'、 'POST'])
:DEFレジスト()
形式= RegistForm( Request.Form)
request.method == 'POST'の場合:
もしform.validate():
リターン'验证通过'
他:
プリント(form.errors)
リターンform.errorsが
render_template( 'validate.html')を返す


場合__name__ = = '__main__':
app.run(デバッグ=真)

 

おすすめ

転載: www.cnblogs.com/zhongyehai/p/11844998.html