2017-05-04 11 views
-3

瓶版本:0.12 gunicorn版本:19.7.1 Python版本:2.7.10在Flask中检索HTTP POST参数的端到端工作示例?

瓶当我与全球请求对象任何东西(这就是HTTP POST数据云)总是抛出一个错误。

RuntimeError:在请求上下文之外工作。

官方的例子在 http://flask.pocoo.org/docs/0.12/quickstart/#a-minimal-application

from flask import request 

@app.route('/login', methods=['GET', 'POST']) 
def login(): 
    if request.method == 'POST': 
     do_the_login() 
    else: 
     show_the_login_form() 

给出了同样的错误。

我经历了至少10个其他的例子,他们都没有工作(总是相同的错误)。我还检查了如何设置或获取请求上下文(http://flask.pocoo.org/docs/0.12/reqcontext/),并且文档中出现了不连贯的混乱情况。

我发现的其他在线例子都没有工作,或者太具体而无法使用。

有人可以发布一个HTTP POST Flask应用程序的例子来打印POST参数吗?

+1

我无法重现您的问题。在路由中运行的所有东西都在请求上下文中。请[edit]包含[mcve]。 – davidism

+0

然后发布一个例子作为答案,我会测试它。我已经发布了官方的例子(这对我不起作用)。 – user1258361

+0

尝试在'''@ app.route('/ login',methods = ['GET','POST'])之前添加'''app = Flask(__ name __)''' –

回答

0

想通了。问题在于gunicorn在处理HTTP POST时失败。在导出FLASK_APP环境变量并运行后运行。

在命令行:

export FLASK_APP=path/to/my/flask/script.py 
flask run -p [port number] 

在烧瓶脚本:

@app.route("/example_app", methods=["POST"]) 
example_function(request.form["field"]) 
return "finished"