问题描述
我在以这种方式(在包内)使用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_ENV
和FLASK_DEBUG
.env
不是我的目标。只需修改setting
envvar。我先感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)