让Django使用任意Python文件中的设置而不是可导入的模块
项目描述
未维护(2022-12-07)
由于该包从未流行,我已停止维护此包。如果您想使用功能,我建议将少量代码复制到您的项目中。
让Django使用任意Python文件中的设置而不是可导入的模块。
要求
支持Python 3.7到3.11。
支持Django 3.2到4.1。
想要更聪明、更快速地工作?查看我的书提升您的Django DX,它涵盖了许多提高您开发体验的方法。
用法
使用 python -m pip install django-settings-file 安装。
编辑您的 manage.py 和 wsgi.py 文件,以替换 Django 默认的 DJANGO_SETTINGS_MODULE 设置逻辑,改为执行以下操作:
import django_settings_file django_settings_file.setup()
在调用 setup() 之前添加 os.environ.setdefault('DJANGO_SETTINGS_FILE', '/path/to/default.py'),除非您能确定 DJANGO_SETTINGS_FILE 将始终在您的环境中定义。您可能需要使用一些 os.path 操作来找出相对于您的 manage.py 的路径。
运行它!如果 DJANGO_SETTINGS_MODULE 已定义,它将抛出一个 DjangoSettingsFileError 异常,其中包含有关现在只允许 DJANGO_SETTINGS_FILE 的消息。如果 DJANGO_SETTINGS_FILE 未定义,它也会失败,并抛出一个包含有关定义它的消息的 DjangoSettingsFileError 异常。否则 Django 应该使用这些设置启动!
工作原理
django-settings-file 使用您的 Python 版本可用的导入机制导入指定文件的全部内容(针对 2 和 3 版本有不同的逻辑),并将内容复制到其自己的模块中,Django 会将其视为通过传统方式定义的 DJANGO_SETTINGS_MODULE 设置文件。实际上并没有真正触及 Django,它只是一个巧妙的模块。
注意事项
如果由 DJANGO_SETTINGS_FILE 定义的 Python 文件尝试执行任何导入,该文件所在的目录将不会在 PYTHONPATH 上,因此设置文件的作者可能会遇到一些惊喜。
此外,您可能还会在文件不在 PYTHONPATH 上时加载文件时遇到其他问题。
如果您想使您的设置文件扩展另一个文件,您可能最简单的方法是从 PYTHONPATH 上的位置导入基础文件,否则它也必须使用相同的导入“黑客”技巧来加载默认设置。
文件路径在不同操作系统之间不可移植,因此您可能需要逻辑来同时支持 Unix 和 Windows。
文件路径在 .py 和 .pyc 文件之间不可移植。在大多数情况下,这意味着不会使用 .pyc 文件作为设置,因为它无法保证存在,这会略微减慢导入时间。
DJANGO_SETTINGS_MODULE 和 DJANGO_SETTINGS_FILE 不能在同一个项目中同时使用,因为模块对于基于文件的逻辑是必需的。您可能可以通过额外的逻辑允许它们同时使用,欢迎提交拉取请求。
¯\_(ツ)_/¯ - 这是一种未知领域,这个库还没有在任何实际项目中测试过,只是在测试文件夹中的示例项目中测试过。
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分发
django-settings-file-2.10.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 608d43cc6017b3cec81270d8014f5eebe400239188fdb81499d922edf9ff47d4 |
|
MD5 | aa011ab648bdfd73e93b98bce02f3c49 |
|
BLAKE2b-256 | 3f37aecaa3d2b2a8eda0296118486c8ce752858f22a55761b151e9bc328af403 |
django_settings_file-2.10.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 312695f5c14e542dbe79842562437c448c5c6aa0f4478dfd12cee2e5283df996 |
|
MD5 | a3ca95e11d8c2a764daf7f75ecb15f66 |
|
BLAKE2b-256 | 0f95235e79c5c29ff30db4c4d5f76062416bd6c41ca8074b9775c9ebe8d5d8a0 |