これは、(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 コードを実行しますか? 誰かが合計を提案してもらえますか? 私はフラスコにかなり慣れていないので、他の人のコードを編集しています