相关疑难解决方法(0)

在Flask中使用隐藏字段_method更改请求方法

开始学习Python和Flask作为学习练习,来自PHP/Symfony2,我可以在表单中添加一个隐藏的_method字段,用DELETE或PUT覆盖POST方法.

似乎Flask本身并不支持这种做法,而且我一直在讨论包括http://flask.pocoo.org/snippets/38/在内的各种想法,这些想法有效,但涉及将覆盖放在表单动作中,而不是而不是作为隐藏字段,IMO使URL看起来不雅观.

上述地址的注释中有一个片段,它使_method从路由角度工作,但正如在那里讨论的那样,如果您尝试访问视图中的request.form,则会导致请求挂起.

有人有解决方法吗?如果没有,我会把所有的东西都当作POST来处理,但能够找到一种让它工作的方法会很好.

干杯.


编辑:这是任何想要看一看的人的代码:

模板:

<form action="{{ url_for('login') }}" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input class="span12" name="email" type="text" placeholder="E-mail address" value="{{ email }}">
    <input class="span12" name="password" type="password" placeholder="Your password">
    <a href="{{ url_for('reset_password') }}" class="forgot">Forgot password?</a>
    <div class="remember">
        <input id="remember-me" type="checkbox">
        <label for="remember-me">Remember me</label>
    </div>
    <input class="btn-glow primary login" type="submit" name="submit" value="Log in">
</form>
Run Code Online (Sandbox Code Playgroud)

应用程序/ __ init__.py

from flask import Flask
from werkzeug.wrappers import Request

class MethodRewriteMiddleware(object):
    def __init__(self, app, input_name='_method'):
        self.app = app
        self.input_name = …
Run Code Online (Sandbox Code Playgroud)

python werkzeug flask

9
推荐指数
1
解决办法
4063
查看次数

标签 统计

flask ×1

python ×1

werkzeug ×1