Flask配置文件不工作

2024-10-03 09:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

flask documentation开始,我试图在我的项目中实现config。但它似乎并不像预期的那样有效。我可能错了。但我不明白我错过了什么。在

class Config(object):
    DEBUG = False
    TESTING = False
    CSRF_ENABLED = True
    TIMEOUT_COUNT=60
    DBCONFIG ={
      'DBNAME' : 'dbname',
      'DBUSER' : 'laxmikant',
      'DBPASSWORD' : '*******',
      'DBHOST' : 'localhost'
    }

class ProductionConfig(Config):
    SERVER_NAME = 'PRODUCTION'
    dbcredentials = {'DBUSER' : 'produser', 'DBPASSWORD':'******'}
    Config.DBCONFIG.update(dbcredentials)

class DevelopmentConfig(Config):
    SERVER_NAME = 'DEVELOPMENT'
    DEVELOPMENT = True
    TESTING = True
    DEBUG = True
    dbcredentials = {'DBUSER' : 'devuser', 'DBPASSWORD':'******'}
    Config.DBCONFIG.update(dbcredentials)

在运行python run.py之前,我根据环境设置APP_SETTINGS

^{pr2}$

我读取了配置文件并为两个服务器打印了DBCONFIG:

   environment = os.environ['APP_SETTINGS']
   app.config.from_object(environment)
   print '''[{}]  INFO {}'''.format(app.config['SERVER_NAME'], app.config['DBCONFIG'])

以下是生产服务器的实际输出:

$ export APP_SETTINGS="config.ProductionConfig"
laxmikant:~/workspace/project-xyz$ python run.py 
[PRODUCTION]  INFO {'DBPASSWORD': '******', 'DBUSER': 'devuser', 'DBHOST': 'localhost', 'DBNAME': 'dbname'}
[02-10 2016 22:39:33]  INFO - * Running on http://0.0.0.0:3004/ (Press CTRL+C to quit)

以及开发服务器

$ export APP_SETTINGS="config.DevelopmentConfig"
laxmikant:~/workspace/project-xyz$ python run.py 
[DEVELOPMENT]  INFO {'DBPASSWORD': '******', 'DBUSER': 'devuser', 'DBHOST': 'localhost', 'DBNAME': 'dbname'}
[02-10 2016 22:41:40]  INFO - * Running on http://0.0.0.0:3004/ (Press CTRL+C to quit)

问题是,为什么development和生产{}给出相同的DBCONFIG信息?在

**注意**-我不会在生产中使用python run.py,但这里我只需要测试配置。所以请忽略python run.py


Tags: runpyinfoconfigtrueappsettingsclass
1条回答
网友
1楼 · 发布于 2024-10-03 09:20:56

您试图在子类中更新同一父类的字典。尝试复制和更新:

class ProductionConfig(Config):
    dbcredentials = {'DBUSER' : 'produser', 'DBPASSWORD':'******'}
    DBCONFIG = Config.DBCONFIG.copy()
    DBCONFIG.update(dbcredentials)

class DevelopmentConfig(Config):
    dbcredentials = {'DBUSER' : 'devuser', 'DBPASSWORD':'******'}
    DBCONFIG = Config.DBCONFIG.copy()
    DBCONFIG.update(dbcredentials)

相关问题 更多 >