【发布时间】:2015-11-12 16:50:57
【问题描述】:
大家好,我是 Python 新手,我正在尝试为简单的烧瓶应用程序构建装饰器。我不断收到 RuntimeError:在请求上下文之外工作。这是完整的堆栈跟踪,不知道我在这里做错了什么可能是菜鸟错误
这是我的代码:
from flask import Flask, session
from flask import session
from functools import wraps
app = Flask(__name__)
def check_login(function):
@wraps(function)
def decorated_function(*args, **kwargs):
if 'logged_in' in session:
return function(*args, **kwargs)
return 'You are NOT logged in. Please log in to continue'
return decorated_function()
@app.route('/')
def default_route():
return 'This is the default page.'
@app.route('/page1')
@check_login
def page_one():
return 'This is page1.'
app.secret_key = 'Youwillneverguess'
if __name__=='__main__':
app.run(debug=True)
正如我所说,我是 python 新手,如果你们能给我任何帮助,我将不胜感激
【问题讨论】:
-
return decorated_function()应该是return decorated_function(请注意第二个示例中缺少尾括号) - 您是在 调用decorated_function而不是返回它。 -
@Sean Vieira 你为什么不把它作为独奏发布?
-
非常感谢,今天看了2个小时!拯救了我的一些头发