如果重要的话,我正在使用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中的其他所有内容都运行良好。
答案 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 Quickstart和Request Context文档中详尽记录。
你没有 来理解这一切。当您确实需要担心请求数据时,它会起作用,例如:当浏览器连接到Flask应用程序并调用视图函数来呈现结果时,request
将正常工作。