gpt4 book ai didi

python - 在flask中使用工厂模式时如何在flask扩展中使用配置?

转载 作者:行者123 更新时间:2023-11-30 22:51:29 27 4
gpt4 key购买 nike

我在Web应用程序的开发过程中使用工厂模式和flask扩展,例如flask-admin。我想在应用程序尚未创建时在 Flask-admin 中加载一些配置。因此,我使用 current_app.config["SOME_CONFIG"] 来获取配置值。但是我得到了 在应用程序上下文之外工作。 异常。代码如下:

# __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_app 函数期间,您的应用程序仍处于设置状态(请参阅 http://flask.pocoo.org/docs/0.11/appcontext/ )。在设置状态期间,您需要引用应用程序对象才能访问它,不能使用 current_app。

您可以使用以下方法在 create_app 函数中实例化 Admin 对象:

admin = Admin(name=app.config["ADMIN_NAME"], template="bootstrap2")

或者

更改 admin 变量并在 admin/__init__.py 中创建一个函数:

admin = object()
def instantiate_admin(config):
global admin
admin = Admin(name=config["ADMIN_NAME"], template="bootstrap2")
return admin

并在 create_app() 中使用它:

from admin import instantiate_admin 
admin = instantiate_admin(app.config)
admin.init_app(app)

关于python - 在flask中使用工厂模式时如何在flask扩展中使用配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38999702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com