Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Flask中发出带有url_的POST请求_Python_Http Post_Flask_Jinja2 - Fatal编程技术网

Python 在Flask中发出带有url_的POST请求

Python 在Flask中发出带有url_的POST请求,python,http-post,flask,jinja2,Python,Http Post,Flask,Jinja2,我正在尝试在中的模板内发出POST请求。但是,默认情况下,参数是通过GET传入的,并且这个特定的方法只接受POST请求 我尝试指定\u方法,如下所示,但它仍然使用GET而不是POST传递参数 <li><a href = "{{ url_for('save_info', _method='POST', filepath=s.name ) }}"><div class="nodes">{{ s.title}} - {{ song.owner }}</div&

我正在尝试在中的模板内发出POST请求。但是,默认情况下,参数是通过GET传入的,并且这个特定的方法只接受POST请求

我尝试指定
\u方法
,如下所示,但它仍然使用GET而不是POST传递参数

<li><a href = "{{ url_for('save_info', _method='POST', filepath=s.name ) }}"><div class="nodes">{{ s.title}} - {{ song.owner }}</div></a></li>

  • (无论我是否指定方法,错误消息都是相同的。

    所有链接都是
    GET
    请求。您不能强制
    发布

    另一种选择是:

    @app.route('/save_info/<filepath>', methods=['GET', 'POST'])
    def save_info(filepath):
      if request.method == 'POST' or filepath:
        ...
    
    @app.route('/save_info/',方法=['GET','POST'])
    def保存信息(文件路径):
    如果request.method==“POST”或文件路径:
    ...
    

    您必须找到一种很好的方法,强制代码忽略您发送的
    GET
    请求。

    您可以制作一个只包含提交按钮的表单,或者使用AJAX或其他客户端脚本发送帖子。据我所知,您不能让链接发送帖子。

    您可以添加一个中间路径,用于搜索覆盖http方法的GET参数。 看那里:

    您的新链接将如下所示:

    <li><a href = "{{ url_for('save_info', __METHOD_OVERRIDE__='POST', filepath=s.name ) }}"><div class="nodes">{{ s.title}} - {{ song.owner }}</div></a></li>
    

  • Hm,是否有其他方法可以做到这一点,而不必像表单那样通过URL传递信息?这实际上并不是一个表单本身,但它的呈现方式是相同的(呈现给用户的选择)。遗憾的是,没有AJAX或表单,您无法发送
    POST
    请求。谢谢,我不知道
    \u方法
    arg。