python - Django:如何管理开发和生产设置?

标签 python django

我一直在开发一个基本的应用程序。现在在部署阶段,很明显我需要本地设置和生产设置。

很高兴知道以下内容:

  • 如何最好地处理开发和生产设置。
  • 如何将 django-debug-toolbar 等应用仅保留在开发环境中。
  • 有关开发和部署设置的任何其他提示和最佳做法。

最佳答案

DJANGO_SETTINGS_MODULE environment variable控制 Django 将加载哪些设置文件。

因此,您可以为各自的环境创建单独的配置文件(请注意,它们当然可以从单独的“共享设置”文件 import *)并使用 DJANGO_SETTINGS_MODULE 控制使用哪一个。

方法如下:

如 Django 文档中所述:

The value of DJANGO_SETTINGS_MODULE should be in Python path syntax, e.g. mysite.settings. Note that the settings module should be on the Python import search path.

因此,假设您在源代码库中创建了 myapp/production_settings.pymyapp/test_settings.py

在这种情况下,您需要分别设置 DJANGO_SETTINGS_MODULE=myapp.production_settings 使用前者,设置 DJANGO_SETTINGS_MODULE=myapp.test_settings 使用后者。


从这里开始,问题归结为设置 DJANGO_SETTINGS_MODULE 环境变量。

使用脚本或 shell 设置 DJANGO_SETTINGS_MODULE

然后,您可以使用引导脚本或进程管理器来加载正确的设置(通过设置环境),或者在启动 Django 之前从 shell 中运行它:export DJANGO_SETTINGS_MODULE=myapp.production_settings .

请注意,您可以随时从 shell 运行此导出 - 它不需要存在于您的 .bashrc 或任何东西中。

使用进程管理器设置 DJANGO_SETTINGS_MODULE

如果您不喜欢编写设置环境的引导脚本(并且有充分的理由有这种感觉!),我建议您使用流程管理器:


最后,请注意您可以利用 PYTHONPATH 变量将设置存储在完全不同的位置(例如,在生产服务器上,将它们存储在 /etc/)。这允许将配置与应用程序文件分开。您可能想要也可能不想要,这取决于您的应用程序的结构。

关于python - Django:如何管理开发和生产设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10664244/

相关文章:

Python:导入与函数同名的模块

python - 将多个列中的匹配对分组在一起 Python

python - Django 选择不同的字段不起作用

python - 加载 numpy 包的正式方法是什么?

python - 获取 'type' 作为人类可读字符串的返回值

python - 具有挑战性的django查询集构建

python - 这个python函数如何获取它的参数?

mysql - django,一个orm命令执行重复的sql语句

jquery - django admin - 如何在文件末尾添加 javascript

django 管理员编辑模型选择/prefetch_related?