gpt4 book ai didi

python - Flask 不加载配置

转载 作者:可可西里 更新时间:2023-11-01 09:50:39 28 4
gpt4 key购买 nike

我在 Flask 中加载配置时遇到问题。

from config import config, DevelopmentConfig, TestingConfig, ProductionConfig

def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name]) # Doesnot load configuration
app.config.from_object(DevelopmentConfig) # Loads configuration succesfully.

我已经检查了 config[config_name] 等的类型。它们都很好。

配置文件如下。导入、对象类型没有问题。如果静态传递一切正常。'host'='serverip' 是故意的。

此外,当我尝试使用 SQLAlchemy 连接到数据库时不会出现此问题,但在 MongoDB 的情况下,它不会更新应用程序设置中的 MONGODB_SETTINGS。

import os
basedir = os.path.abspath(os.path.dirname(__file__))

from helper.helper_functions import generate_secret_key

class Config:
SECRET_KEY = os.environ.get('SECRET_KEY') or generate_secret_key()
SSL_DISABLE = False

@staticmethod
def init_app(app):
pass


class DevelopmentConfig(Config):
DEBUG = True
MONGODB_SETTINGS = {
'DB': 'development_db',
'host': 'localhost',
'port': 27017
}


class TestingConfig(Config):
TESTING = True
WTF_CSRF_ENABLED = False
MONGODB_SETTINGS = {
'DB': 'testing_db',
'HOST': 'localhost',
'PORT': 27017
}


class ProductionConfig(Config):
MONGODB_SETTINGS = {
'DB': 'production_db',
'host': 'server_ip',
'port': 27017, # default =27017
# other settings...
}

@classmethod
def init_app(app):
Config.init_app(app)

config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': TestingConfig,
}

有趣的是

app.config.update(MONGODB_SETTINGS={'DB':'testing_db'})   # works
settings = dict([('db', 'testing_db')])
app.config.update(MONGODB_SETTINGS=settings) # Does not work

此外,当我尝试使用 Flask-Config 提供的其他方法从配置文件加载配置时。

conf_name = 'test-config.py'
app.config.pyfile(conf_name) # Doesnot load the configuration from the file.
app.config.pyfile(''+conf_name) # Doesnot load the configuration from the file.
app.config.pyfile('test-config.py') #successfully loads the configuration from file.

最佳答案

我认为问题可能出在您将 Python 对象提供给 app.config.from_object 而它需要一个字符串这一事实。来自文档:

app = Flask(__name__)
app.config.from_object('yourapplication.default_settings')
app.config.from_envvar('YOURAPPLICATION_SETTINGS')

http://flask.pocoo.org/docs/0.10/config/#configuring-from-files

因此,在您的情况下,您可能需要执行以下操作:

app.config.from_object('your_app.config.{}'.format(config_name))

其中 config_name 与您的 config.py 中的对象匹配。

关于python - Flask 不加载配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34811823/

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