这是一个函数(在GET请求中)接收case_url和case_key,并将相应的case(使用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代码?有人可以建议一下吗? 我很喜欢烧瓶,我正在编辑其他人的代码
答案 0 :(得分: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>