2016-04-26 17 views
1

Flaskアプリでユーザーに確認/成功メッセージを表示しようとしていますが、それをモーダルで表示する方法がわかりません。フォーム提出後にFlaskアプリで確認モーダルを表示するにはどうすればよいですか?

@app.route("/", methods=["POST"] 
def sendForm(): 
    form = ContactForm(request.form) 
    if request.method == 'POST': 
     if form.validate(): 
      # do stuff with form data 
      return render_template("contact.html", form=form) 
     else: 
      # display error message 
    else: 
     return render_template("index.html") 

私がcontact.htmlテンプレートを返す部分は、助けが必要なところですと思います。そのページは基本的にリフレッシュされ、POSTリクエストが正常に完了した後に再び表示されるためです。代わりにモーダルで確認メッセージをユーザーに表示する必要があります。

フロントエンドには、私の形式は、次のようになります。

<form method="POST" action="{{ url_for('sendForm') }}"> 
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" /> 
    {{ render_field(form.email) }} 
    {{ render_field(form.name) }} 
    <input id="submit-form" type="submit" value="Send"> 
</form> 

答えて

1

私はこれのいくつかのフォームを行うだろう...

はあなたのrender_templateにブール値を渡します。

submission_successful = True #or False. you can determine this. 
render_template("contact.html", form=form, submission_successful=submission_successful)) 

テンプレートのif文には、

{% if submission_successful %} 
    // modal elements here 
{% endif %} 
+1

これはすばらしいアプローチです。非常にシンプルすぎ、ありがとう!私が気づいたことの1つは、フォームが通過すると、ブラウザのURLが '@ app.route("/")'で更新されるということです。ブラウザの更新アイコンをクリックすると、 'POST'リクエストが再送されます。これを避ける方法はありますか? – mapr

+0

これは実際には興味深い質問です。一見すると、私はこれが助けるかもしれないと思う - http://stackoverflow.com/questions/4327236/stop-browsers-asking-to-resend-form-data-on-refresh –

+0

ありがとう!それをチェックします。 – mapr

関連する問題