1

これは、(GET リクエストで)case_url と case_key を受け取り、対応するケースを(mongoDB を使用して)detail_case と呼ばれる html テンプレートに提供する関数です。フォームが(この同じページdetail_caseで)入力されて送信されたときに、同じ関数にPOSTリクエストを送信し、「if request.method = = "POST"」の下のコードを送信する機能を追加しようとしています処刑される。

@app.route('/case/<case_url>/<case_key>', methods=["GET","POST"])
def serve_case(case_url,case_key):
"""for saving a comment in db.comments"""
if request.method == "POST":    

    text=request.form['comment_text']
    #code which inserts it in the database

    return redirect(url_for('serve_case', \
    case_url=case_url,\
    case_key="Highlights"))

"""
Function serves the case as per the key indicated in the URL
"""

#corresponding code here which fills values of variables and sends it to another page

return render_template('detail_case.html')

問題は、POST リクエストが実行されるとは思えないことです。これは、テンプレート ページ detail_case- の html コードです。

<textarea placeholder="Please enter your comments here" action="{{ url_for('serve_case',case_url=case_url,case_key=case_key)}}" method="POST" name="comment_text" rows="6"></textarea><br />

問題はアクションフィールドだと思います。変数 comment_text を関数に送信する方法がわかりません。実際、送信時に POST の下のコードは実行されません。基本的に問題は、GET リクエスト中に、関数 serve_case のパラメーターで必要な 2 つの変数を送信することです。POST リクエスト中に、アクション フィールドを正確にフレーム化する方法がわかりません。パラメータを送信しないと、エラーになります。同じ関数に送信しない場合、どのように POST コードを実行しますか? 誰かが合計を提案してもらえますか? 私はフラスコにかなり慣れていないので、他の人のコードを編集しています

4

1 に答える 1

4

以下のように POST リクエストを送信する必要があります (たとえば、フォームから)。

<form action="{{ url_for('serve_case',case_url=case_url,case_key=case_key)}}" method="POST">
 <input type="text" placeholder="Please enter your comments here">
 <input type="submit"   name="comment_text" rows="6"><br />
</form>
于 2013-08-22T10:55:45.767 に答える