문제

I have a global flag in one of my modules, config/top.py:

RUNNING_MODE = "production"  # could also be "development", set manually

Depending on this flag, I would like to include some production/development settings. For example, in production.py I want to have:

LOG_LEVEL = "WARNING"

And in development.py:

LOG_LEVEL = "INFO"

(there are much more settings to be set)

The goal is to be able to use those settings transparently in any of my modules, let's say test.py:

from config.settings import LOG_LEVEL

This would use the right setting, either from production.py or from development.py, depending on RUNNING_MODE.

Is there any accepted approach to handle this kind of setup? How would I structure the directories/modules so that, just by changing the RUNNING_MODE in config/top.py the whole configuration happens transparently?

Note: I prefer not to have this in the build process, but to have it embedded in the module structure. That is, I do not want the build process to modify any of my modules.

도움이 되었습니까?

해결책

You can easily achieve this.

Following is the folder structure:

> config/
    settings.py
    production.py
    development.py

Now in settings.py:

RUNNING_MODE = "production"  # could also be "development", set manually

if ENVIRONMENT == "production":
    from production import *
elif ENVIRONMENT == "development":
    from development import *

Keep all your environment dependent settings in individual files.

And then, in views.py or any other file in project.

from config.settings import LOG_LEVEL
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top