Flask报错NameError: name 'app' is not defined 求助
问题原因
你在main.py的index函数里直接使用app变量,但这个变量仅在__init__.py的create_app()函数内部定义,属于局部变量,main模块无法直接访问到它,所以会出现未定义的错误。
解决方案
Flask提供了current_app对象,它会在请求上下文自动指向当前运行的Flask应用实例,这是访问应用配置的标准方式。修改main.py代码如下:
from flask import Blueprint, render_template, current_app main = Blueprint('main', __name__) @main.route('/') def index(): print(current_app.config['CUSTOM_VARIABLE']) return render_template('index.html')
补充说明
current_app只能在请求上下文或应用上下文存在时使用,在视图函数里使用完全没问题,因为视图函数触发时已经处于请求上下文中。- 不要尝试直接从
__init__.py导入app,因为app是create_app()的返回值,不是全局变量,这种导入方式会导致循环导入或者获取到未初始化的实例。
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

