如何在Flask中安装请求类?

时间:2015-03-27 17:03:22

标签: python python-2.7 flask

如果重要的话,我正在使用PyCharm。每当我使用时:

from flask import request

它有效,没有错误。

但每当我尝试使用类似的时候,

request.data
request.args

我得到了

    raise RuntimeError('working outside of request context')
RuntimeError: working outside of request context

从PyCharm以外的命令行我得到,

>>> import flask.request
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named request
>>>

我已经看过这个以及其他许多人,

How to get data received in Flask request

http://flask.pocoo.org/docs/0.10/api/#flask.request

尝试导入时没有任何方法或属性。

我在Windows 7上使用虚拟环境.Flask中的其他所有内容都运行良好。

1 个答案:

答案 0 :(得分:1)

Flask对请求使用代理对象。导入from flask import request是正确的,但它本身并不代表请求。 flask.request不是模块。

flask.request的任何访问都会查找您当前的请求;这使得处理请求变得更简单,但这也意味着如果目前没有实际的Web请求,您就不能使用它。

您必须不在实际调用请求的视图之外使用它,或者您需要显式创建请求上下文。您可以使用Flask.test_request_context() method

执行此操作
from flask import Flask, request

app = Flask(__name__)

with app.test_request_context('/foo/bar'):
    print request.path  # prints '/foo/bar'

所有这些都在Flask QuickstartRequest Context文档中详尽记录。

你没有 来理解这一切。当您确实需要担心请求数据时,它会起作用,例如:当浏览器连接到Flask应用程序并调用视图函数来呈现结果时,request将正常工作。