python模块中的项目设置。
project-settings的Python项目详细描述
任何项目的示例设置。 这些包允许在一个简单的python模块中保留项目设置。 模块路径可以在环境变量中指定,也可以在方法configure中指定。
此外,环境变量可以包含模块不会覆盖的任何变量。 所有变量必须以设置的基名称开头,大写。
一个项目可以有多个设置模块:
- 基本-项目的基本设置;
- 额外-额外变量,例如dev或staging;
- 全局-全局变量,默认情况下类似于变量。
所有模块中的所有变量都应大写。
在基本设置模块中声明为settings.EXTRA_VAR = "VAR_VALUE"和的额外变量 使用like soVAR = settings.EXTRA_VAR.split('_') + ['example']。 在“额外设置”模块中,将变量的额外值声明为settings.EXTRA_VAR = "EXTRA_VAR_VALUE" 最后一行导入基本设置模块from my_project.conf.base import *。 结果是assert VAR == ['EXTRA', 'VAR', 'VALUE', 'example']。
示例
/start.py:
import os if __name__ == '__main__': from my_project import main os.environ.setdefault("BASE_SETTINGS_NAME", "MY_PROJECT") os.environ.setdefault("MY_PROJECT_SETTINGS_MODULE", "my_project.conf.extra") os.environ.setdefault("MY_PROJECT_GLOBAL_SETTINGS_MODULE", "my_project.conf.global") os.environ["MY_PROJECT_VAR_2"] = "ENV_VAR_2_VALUE" main.run()
/my_project/main.py:
from my_project.conf import settings def run(): settings.configure() # your code from my_project import code
/my_project/conf/u init_uuu.py:
from project_settings import Settings, AppsSettings settings = Settings() apps_settings = AppsSettings()
/my_project/conf/extra.py:
from my_project.conf import settings settings.EXTRA_VAR = "EXTRA_VAR_VALUE" from my_project.conf.base import *
/my_project/conf/base.py:
from my_project.conf import settings VAR_1 = "VAR_1_VALUE" VAR_2 = "VAR_2_VALUE" settings.EXTRA_VAR = "BASE_EXTRA_VAR_VALUE" VAR_5 = settings.VAR_4 + "_VAR_5_VALUE"
/my_project/conf/global.py:
VAR_1 = "GLOBAL_VAR_1_VALUE" VAR_2 = "GLOBAL_VAR_2_VALUE" VAR_3 = "GLOBAL_VAR_3_VALUE" VAR_4 = "GLOBAL_VAR_4_VALUE"
/my_project/code.py:
from my_project.conf import settings assert settings.VAR_1 == "VAR_1_VALUE" assert settings.VAR_2 == "ENV_VAR_2_VALUE" assert settings.VAR_3 == "GLOBAL_VAR_3_VALUE" assert settings.VAR_4 == "EXTRA_VAR_VALUE" assert settings.VAR_5 == "EXTRA_VAR_VALUE_VAR_5_VALUE"
运行python start.py后,将在执行settings.configure()后生成所有设置。 配置后,可以覆盖变量的值,例如:settings.var_1=“new_value_var_1”。
应用程序设置
要在设置中使用,必须指定一个包含应用程序列表的变量 已安装的应用程序=['my_project.apps.app']并初始化应用程序设置=apps settings()。 接下来,必须在内部添加包my_project.apps.appmodulesettings。 模块可以包含大写声明的应用程序变量。
/我的项目.apps.app.settings.py:
from project_settings import AppSettings VAR1 = 'app_var1' VAR2 = 'app_var2' class AppSettings(AppSettings): name = 'app' def ready(self): from my_project.conf import settings settings.READY_VAR = 'APP_READY_VAR'
应用程序设置将作为apps\u settings.app.var1提供。 应用程序设置变量也可以使用环境变量声明, 如果它以大写的应用程序名开头,例如export APP_ENV_VAR=example。