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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
枚举Java如何设计自己的类型?   java Dagger2找不到带注释的方法   Java 8的模式匹配接口显示编译器警告   java创建intellij 15的可移植版本   java Spring STS 3.6.1和Gradle插件   java不支持列表。删除()或列表。removeAll()释放内存使用率?   java是所有静态方法还是单个实例?   java当我们在没有sparql的情况下使用jena时,如何在RDF中检索对象的值?   java如何使用底部导航视图引用片段和活动?   在tomcat中运行jsp文件时出现java错误?   java Android使用GoogleAppClient获取用户位置纬度和经度   java如何正确地重用在其他功能类中编写的方法?   hadoop HBase java。木卫一。java客户端放置记录时的EOFEException