python - 如何在 Flask 中处理来自浏览器的 put 请求?

标签 python flask hidden-field

来自于express.js背景,我非常习惯方法覆盖中间件,它使您能够通过隐藏的输入标记处理非浏览器支持的HTTP动词(例如PUT,DELETE等)。

例如)

    <input type="hidden" name="_method" value="PUT">

如何在 Flask 中模仿这个中间件? Flask 不会自动处理这些隐藏输入,因此我无法处理除 GET 或 POST 之外的请求。我的代码摘录如下。

@blueprint.route('/news/<int:article_id>', methods=['GET','PUT','DELETE'])
def article(article_id):
if is_logged_in() and is_admin():
        if request.method == 'PUT':
            #do something

<form action="/news/{{ post.id }}" method="post">
    {{ form.hidden_tag() }}
    <input type="hidden" name="_method" value="PUT">
    {{ form.title.label }} {{ form.title }}
    {{ form.body.label }} {{ form.body }}
    {{ form.submit }}
</form>

编辑:找到解决方案: http://flask.pocoo.org/snippets/38/

最佳答案

这实际上与 Flask 没有任何关系(我想除了你的模板引擎附带) - 你仍然需要生成一个 HTML 页面来告诉浏览器使用 PUT.

HTML form 元素不能直接用于 POSTGET 以外的任何用途,因此对其他方法的任何支持都应通过JavaScript 中的 XMLHttpRequest

也可以通过POST“隧道”其他请求方法,方法是使用隐藏字段(如上所示)并让服务器为您进行转换,但这不是特别有效。您可以在 previous SO question 中看到这样的示例。 ,尽管我不推荐使用 XMLHttpRequest,因为它需要服务器支持,您可能不应该依赖它。

关于python - 如何在 Flask 中处理来自浏览器的 put 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34446877/

相关文章:

python - 如何创建一个新的 typing.Dict[str,str] 并向其中添加项目

python - 如何在 Python 中格式化复数

python - 使用 Flask 连接 ParseServer 时出现身份验证错误

python - PIL : ValueError: unknown resampling filter, 如何调整上传到Flask的图片大小?

jquery - 尝试在隐藏文本字段时将 attr 设置为禁用?

python - 如何删除 Django 模型而不删除表

python - Flask:提交表单后重定向到同一页面

javascript - php返回的隐藏字段设置正确,但使用jquery获取值时为 'undefined'

ruby-on-rails - Rails 隐藏字段未定义方法 'merge' 错误

mysql-5.6 - cursor.query( 'select * from %s;' , ('thistable' ,) ) 抛出语法错误 1064 : . ..near ' ' thistable' ' at