在开发web应用程序期间,我使用factory模式和flask扩展,比如flask admin。我想加载一些配置在烧瓶管理员当应用程序还没有创建。所以我使用current_app.config["SOME_CONFIG"]
来获取配置值。但是我得到了Working outside of application context.
异常。代码如下:
# __init__.py
from flask import Flask
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config_name)
app.config.from_pyfile("config.py")
from admin import admin
admin.init_app(app)
return app
# admin/__init__.py
from flask import current_app
from flask_admin import Admin
admin = Admin(name=current_app.config["ADMIN_NAME"], template="bootstrap2")
在执行create\u app函数期间,应用程序仍处于安装状态(请参见http://flask.pocoo.org/docs/0.11/appcontext/)。在安装状态期间,您需要有对应用程序对象的引用才能访问它,您不能使用当前的应用程序。在
您可以使用以下命令在create_app函数中实例化Admin对象:
admin = Admin(name=app.config["ADMIN_NAME"], template="bootstrap2")
或者
更改admin变量并在
admin/__init__.py
中创建一个函数:并在create_app()中使用:
^{pr2}$你需要做的就是像下面这样设置它。在
在你的管理包里
^{pr2}$下面是一个实际例子的链接。我清理了信息,所以它更通用,但这是我如何设置我的所有烧瓶应用程序。在
http://hastebin.com/likupoxoxi.py
只要您运行的是dev服务器,就不应该出现将其保留在应用程序上下文中的问题。在
相关问题 更多 >
编程相关推荐