我正在尝试在Jinja的Flask模板中发出POST请求。但是,默认情况下,参数通过GET传入,并且此特定方法仅接受POST请求。
我尝试指定_method
,如下所示,但仍然使用GET而不是POST传递参数。
<li><a href = "{{ url_for('save_info', _method='POST', filepath=s.name ) }}"><div class="nodes">{{ s.title}} - {{ song.owner }}</div></a></li>
(无论是否specify _method
,错误信息都是相同的。)
答案 0 :(得分:12)
所有链接都是GET
个请求。您无法强制POST
。
另一种选择是:
@app.route('/save_info/<filepath>', methods=['GET', 'POST'])
def save_info(filepath):
if request.method == 'POST' or filepath:
...
您必须找到一种很好的方法来强制您的代码忽略您发送GET
请求。
答案 1 :(得分:2)
您可以创建仅包含提交按钮的表单,也可以使用AJAX或其他一些客户端脚本发送POST。据我所知,你不能发一个链接发送POST。
答案 2 :(得分:1)
你可以添加一个Middelway来搜索覆盖http方法的GET参数。 看那里:http://flask.pocoo.org/snippets/38/
您的新链接如下所示:
<li><a href = "{{ url_for('save_info', __METHOD_OVERRIDE__='POST', filepath=s.name ) }}"><div class="nodes">{{ s.title}} - {{ song.owner }}</div></a></li>