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

了解以下信息将非常棒:

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

推荐答案

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

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

以下是操作方法:

如Django文档中所述:

DJANGO_SETTINGS_模块的值应该是Python路径语法,例如mysite.设置.请注意,设置模块应该位于Python导入搜索路径上.

那么,假设您在源存储库中创建了myapp/production_settings.pymyapp/test_settings.py.

在这种情况下,分别将DJANGO_SETTINGS_MODULE=myapp.production_settings设置为使用前者,将DJANGO_SETTINGS_MODULE=myapp.test_settings设置为使用后者.


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

Setting DJANGO_SETTINGS_MODULE using a script or a shell

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

请注意,您可以随时从shell运行此导出,它不需要在您的.bashrc或任何程序中运行.

Setting DJANGO_SETTINGS_MODULE using a Process Manager

如果你不喜欢编写设置环境的 bootstrap 脚本(有很好的理由这么认为!),我建议使用流程管理器:


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

Django相关问答推荐

Django REST framework:object has no attributed after annotation;Got attributeError when try to get a value for field field on serializer<>

在模板中自动添加变量

如何在uwsgi中创建单个日志(log)文件?

Django 中模型将数据存储在哪里?

Django Admin:在一个部分中同时显示多个应用程序?

情节主题更改问题

反向 url django 管理员

有谁知道是否可以将您的 Django Heroku 应用程序放到 App Store/Google Play 上?

Pymongo:搜索文档时忽略空输入值

Django 如何知道我的数据库的路径?

Django InlineModelAdmin:部分显示内联模型并链接到完整模型

djangorestframework:过滤相关字段

Django PositiveIntegerField 中的 0 值?

如何迭代模板中 SelectField 的选项?

django.core.exceptions.ImproperlyConfigured:请求设置 USE_I18N,但未配置设置

Python Django 模板和测试变量是否为空或空字符串

django post_save 更新信号

Django urls 直接到 html 模板

Celery - 在一台服务器上运行不同的工作人员

import_module 的 Django 1.9 ImportError