在Flask中使用url_for发起POST请求
我正在尝试在一个 Jinja 模板中发起一个 POST 请求,使用的是 Flask 框架。不过,默认情况下,参数是通过 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>
(无论我是否指定 _method
,错误信息都是一样的。)
3 个回答
2
你可以添加一个中间件,它会查找一个GET参数,这个参数可以覆盖HTTP请求的方法。你可以在这里查看: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>
2
你可以做一个只包含提交按钮的表单,或者使用AJAX或者其他客户端脚本来发送POST请求。根据我所知道的,链接是不能直接发送POST请求的。
19
所有的链接都是 GET
请求。你不能强制使用 POST
请求。
另外一种方法是这样的:
@app.route('/save_info/<filepath>', methods=['GET', 'POST'])
def save_info(filepath):
if request.method == 'POST' or filepath:
...
你需要找到一个好的方法,让你的代码忽略你发送的是 GET
请求。