使用出厂模式时如何正确设置烧瓶的配置?

问题描述

我在以这种方式(在包内)使用config时遇到问题

/project
|   __init__.py
│   run.py
|   manager.py
|
|───.env
├───app
│   │   models.py
│   │   __init__.py
│   |   extensions.py
|
├───instance
|   |   __init__.py
│   |   config.py
#/instance/config.py
import os
import random


class Config(object):
    """Parent configuration class."""
    DEBUG=False
    CSRF_ENABLED = True
    SECRET_KEY= os.urandom(20)
    SQLALCHEMY_DATABASE_URI = os.getenv("URI")
    SQLALCHEMY_TRACK_MODIFICATIONS = False

class DevelopmentConfig(Config):
    """Configurations for Development."""
    DEBUG = True


class TestingConfig(Config):
    """Configurations for Testing,with a separate test database."""
    TESTING = True
    DEBUG = True

class StagingConfig(Config):
    """Configurations for Staging."""
    DEBUG = True


class ProductionConfig(Config):
    """Configurations for Production."""
    DEBUG = False
    TESTING = False


app_config = {
    'development': DevelopmentConfig,'testing': TestingConfig,'staging': StagingConfig,'production': ProductionConfig,}

然后运行。py

#/run.py

from .app import create_app
import os


setting=os.getenv("SETTINGS")
myapp = create_app(setting)

print(myapp.config)

因此,当我想加载DevelopmentConfig类时,我得到了变量setting解析.env和值development,但是flask根据以下命令设置了除debug和flask_env之外的所有内容类DevelopmentConfig。看看

(winner) C:\Users\Manuel\Desktop\practica_kiero>flask run
 * Serving Flask app "run:myapp"
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off

this is the actual value of setting: development
this is the app object config after creation <Config {'ENV': 'production','DEBUG': True,'TESTING': False,'PROPAGATE_EXCEPTIONS': None,'PRESERVE_CONTEXT_ON_EXCEPTION': None,'SECRET_KEY': b'\xae\x9e\xb02\x96\x88\x86C\xb4\xa1\xc8\x85\x94\xff\x95\xb9u\xfc\x9b\x9b','PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31),'USE_X_SENDFILE': False,'SERVER_NAME': None,'APPLICATION_ROOT': '/','SESSION_COOKIE_NAME': 'session','SESSION_COOKIE_DOMAIN': None,'SESSION_COOKIE_PATH': None,'SESSION_COOKIE_HTTPONLY': True,'SESSION_COOKIE_SECURE': False,'SESSION_COOKIE_SAMESITE': None,'SESSION_REFRESH_EACH_REQUEST': True,'MAX_CONTENT_LENGTH': None,'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(seconds=43200),'TRAP_BAD_REQUEST_ERRORS': None,'TRAP_HTTP_EXCEPTIONS': False,'EXPLAIN_TEMPLATE_LOADING': False,'PREFERRED_URL_SCHEME': 'http','JSON_AS_ASCII': True,'JSON_SORT_KEYS': True,'JSONIFY_PRETTYPRINT_REGULAR': False,'JSONIFY_MIMETYPE': 'application/json','TEMPLATES_AUTO_RELOAD': None,'MAX_COOKIE_SIZE': 4093,'CSRF_ENABLED': True,'SQLALCHEMY_DATABASE_URI': 'mysql+pymysql://usuario:contraseña@localhost/db_01?charset=utf8mb4','SQLALCHEMY_TRACK_MODIFICATIONS': False,'SQLALCHEMY_BINDS': None,'SQLALCHEMY_NATIVE_UNICODE': None,'SQLALCHEMY_ECHO': False,'SQLALCHEMY_RECORD_QUERIES': None,'SQLALCHEMY_POOL_SIZE': None,'SQLALCHEMY_POOL_TIMEOUT': None,'SQLALCHEMY_POOL_RECYCLE': None,'SQLALCHEMY_MAX_OVERFLOW': None,'SQLALCHEMY_COMMIT_ON_TEARDOWN': False,'SQLALCHEMY_ENGINE_OPTIONS': {}}>
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

所以我要寻找的是快速切换配置(使用类),但还包括类config的DEBUG变量,而无需向其中添加FLASK_ENVFLASK_DEBUG .env不是我的目标。只需修改setting envvar。我先感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...