尝试测试Flask应用程序时出现问题,无法访问该g变量。
经过测试的api如下所示:
user = query_object.get(g.user_id) # here the exception raises
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,它会引发:
NameError: global name 'g' is not defined
Run Code Online (Sandbox Code Playgroud) 最近,我正在学习《龙卷风简介》,并且遇到了以下代码:
class IndexHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def get(self):
query = self.get_argument('q')
client = tornado.httpclient.AsyncHTTPClient()
response = yield tornado.gen.Task(client.fetch,
"http://search.twitter.com/search.json?" + \
urllib.urlencode({"q": query, "result_type": "recent", "rpp": 100}))
body = json.loads(response.body)
[...omitted the following code...]
Run Code Online (Sandbox Code Playgroud)
我曾经学习过,这yield是将通用函数转换为生成器的关键字,当它以形式使用时,other = yield foo意味着“屈服foo,并且当向我发送值时,将其他值设置为该值”。所以我在ipython中尝试了以下代码:
In [1]: result = 'init' #set a global variable
In [2]: def test_yield():
...: global result
...: print 'start test...'
...: result = yield 'foo'
...: print 'end test...'
...:
In [3]: t = test_yield() …Run Code Online (Sandbox Code Playgroud)