Flask:如何从使用 @app.route 装饰器的函数中获取返回值?

who*_*uan 5 python return oauth flask

所以我对 Flask 还很陌生,我正在努力思考一件事。因此,如果我很好地理解,当您在 Flask 应用程序中编写函数并在该函数中使用 @app.route 装饰器时,它仅在您点击该路径/url 时运行。

我有一个用 Flask 编写的小型 oauth 应用程序,它会遍历所有授权流程,然后返回令牌。

我的问题是如何从 @decorated 函数获取该令牌?例如,假设我有这样的东西:

@app.route(/token/)
def getToken(code): #code from the callback url.
    #/Stuff to get the Token/
    #/**********************/
    return token
Run Code Online (Sandbox Code Playgroud)

如果我点击 (/token/) url 路径,该函数将返回令牌。但现在我需要获取该令牌并在另一个函数中使用它来从我刚刚获取令牌的 API 中写入和读取。我最初的想法是这样做:

token = getToken(code)
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,我会收到此错误:

RuntimeError: working outside of request context
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,如何获取令牌,以便将其作为参数传递给其他函数。

cor*_*vid 0

不确定上下文是什么。您只需调用该方法即可。

from yourmodule import get_token

def yourmethod():
  token = get_token()
Run Code Online (Sandbox Code Playgroud)

否则,您可以使用该requests库来从路线检索数据

>>> import requests
>>> response = requests.get('www.yoursite.com/yourroute/')
>>> print response.text
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找单元测试,Flask 附带了一个模拟客户端

def test_get_token():
  resp = self.app.get('/yourroute')
  # do something with resp.data
Run Code Online (Sandbox Code Playgroud)