让django使用任意python文件中的设置,而不是可导入的模块

django-settings-file的Python项目详细描述


django设置文件

让django使用来自任意python文件的设置,而不是可导入模块。

根据James Pic’s idea posted on the django-developers mailing list

要求

支持Python3.4+和Django 1.11-2.2。

使用量

  1. 使用pip install django-settings-file安装。

  2. 编辑manage.pywsgi.py以交换django将DJANGO_SETTINGS_MODULE设置为 请改为:

    importdjango_settings_filedjango_settings_file.setup()
  3. setup()调用之前添加os.environ.setdefault('DJANGO_SETTINGS_FILE', '/path/to/default.py'),除非 可以确保在您的环境中始终定义DJANGO_SETTINGS_FILE。你可能需要找出 相对于您的manage.py的路径,并进行一些os.path操作。

  4. 快跑!如果定义了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上的文件时,您可能会遇到其他问题。
  • 如果您希望您的设置文件扩展另一个文件,可能会发现最容易import基础文件 从PYTHONPATH上的某个位置,否则它也必须使用相同的导入“hacks”来加载默认值 设置。
  • 文件路径在操作系统之间不可移植,因此您可能需要在 一次。
  • 文件路径在.py.pyc文件之间不可移植。在大多数情况下,这意味着.pyc文件将不会 用于设置,因为它不能保证在那里,稍微减慢了导入时间。
  • DJANGO_SETTINGS_MODULEDJANGO_SETTINGS_FILE不能同时由同一个项目使用,因为模块是 基于文件的逻辑所必需的。你可以允许它们都有额外的逻辑,拉请求被接受。
  • ¯\_(ツ)_/¯-这是一种未知的领域,这个库没有在任何实际项目中测试过,只是 测试文件夹中的示例项目。

历史记录

待发布

2.0.1(2019-04-28)

  • 用django 2.2测试。兼容性无需更改。

2.0.0(2019-02-02)

  • 放弃Python2支持,现在只支持Python3.4+。
  • 放下Django 1.8、1.9和1.10支架。现在只支持django 1.11+。

1.0.0(2017-04-14)

  • 第一个版本,支持DJANGO_SETTINGS_FILE,而不是 DJANGO_SETTINGS_MODULE

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

推荐PyPI第三方库


热门话题
图像处理Java 8 ImageIO在Linux中无法正确读取JPEG   spring如何用Java 1.4兼容版本替换@Resource注释   java Http请求参数类型传播   在web浏览器中看不到Java Maven Tomcatplugin web应用程序   jvm在Java中使用直接内存的目的是什么?   如何从列表转换为字符串java   java setAdapter gridview发送上下文   SwingJava。方法上的lang.NullPointerException   java什么是shell脚本、makefile和ant文件   当使用getGraphics()方法时,java JPanel图形会闪烁   java如何将迭代转换为递归?   java为什么我的抽屉菜单在同一个XML上有ConstraintLayout时没有响应?   java如何在图像上画一个圆?   Android studio:Rabbitmq:Error:java。lang.ClassNotFoundException:类io。千分尺。果心仪器找不到仪表注册表