2017-06-25 8 views
0

私が最近継承したFlaskアプリケーションに追加している新しいフォームにFlask-WTFを使用しようとしています。私はフラスコの生態系(WTFormsにまったく新しい)にかなり新しいです。私は4年間でウェブ開発をしていません。Form Validation Failure(Flask-WTForms)のリダイレクト

Flask-WTFドキュメントのサンプルコードは、(Post/Redirect/Get)をリダイレクトするのではなく、フォームの検証に失敗したページをレンダリングします。その時点で、ブラウザの更新は以前のPOSTを再実行します。これは良くないですよね?ほとんどの人はこのシナリオに注意を払わないようですが、避けるべきだと感じている人が少しいます(例えばherehere)。

Flask-WTFの使用中にこの問題を回避するにはどうすればよいですか?検証の失敗にリダイレクトすると、各フィールドに検証エラーを表示する機能が失われてしまいます。あるいは、私はこのシナリオについて心配するべきではないでしょうか?

答えて

0

これは個人的には問題ではないと感じました。 Flask-WTF w/Flask-Bootstrapを使用しています。検証に失敗するとフォームフィールドのエラーが表示されます。彼らが試してフォームを再送信しようとすると、再び失敗し、データベースレベルに達することはないので、Post/Redirect/Getが解決しようとしている問題について心配する必要はありません。

@app.route('/', methods=['GET', 'POST']) 
def index(): 
    form = MyForm() 
    if form.validate_on_submit(): 
     # add/update db. if form is invalid you never get here 
     return redirect(url_for('success')) 
    return render_template('index.html', form=form) 
+0

ただし、前回のリクエストから何らかの状態が変更されても、必ずしも将来的には再び失敗するとは限りません。 –

関連する問題