烧瓶错误发送POST和GET到同一个功能,

时间:2013-08-22 09:45:47

标签: python post flask jinja2 werkzeug

这是一个函数(在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代码?有人可以建议一下吗? 我很喜欢烧瓶,我正在编辑其他人的代码

1 个答案:

答案 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>