5

Django 设置包括一个 python 变量列表,这些变量用于从数据库设置到已安装应用程序的大量事物。甚至许多可重复使用的应用程序都需要进行一些设置。

有几十个站点,很难管理所有项目的设置。

幸运的是,设置只是一个带有变量的 python 模块,所以你可以做任何魔法来填充你想要的变量。

您遵循或认为可用于将各种相关设置分离到不同文件中的做法是什么?

显然,现有的企业实践是开发人员创建战争,然后运维部门将其打给蓝鱼并负责所有数据库(和此类)运维工作(根据Jacob 的电子邮件)。

settings.py您可以创造什么样的动力来帮助现有的企业实践?

4

3 回答 3

1

我经常看到设置文件类似于:

from localsettings import *

并在localsettings.py诸如数据库连接和DEBUG值之类的东西中定义。localsettings.py对于每个部署环境(开发/登台/生产等)来说(或可能)不同,并且不会与其他所有环境一起存在于源代码控制中。

我最近发现有用的东西是把它放在我的settings.py

try:
    from localsettings import *
except ImportError:
    from default_localsettings import *

default_localsettings.py我定义了一堆默认值(DEBUG = True,使用相同目录中的 sqlite 数据库default_localsettings.py等)。

一旦你完成了设置,这可能就没用了,但我发现它很有用,只是能够检查我的项目脱离源代码控制并使用它直接工作runserver,而无需设置任何东西。

于 2010-01-21T13:12:21.033 回答
0

按照此设置覆盖示例来处理开发、登台和生产环境。

http://djangodose.com/articles/2009/09/handling-development-staging-and-production-enviro/

(Wayback Machine 存档版本)

于 2010-01-21T18:59:07.930 回答
0

就个人而言,我喜欢用这样的设置制作一个模块

project/
  settings/
    __init__.py
    settings.py
    local.py

该文件__init__.py如下所示:

from .settings import *
from .local import *

您已经采用变量 BASE_DIR 指向更高一级的目录。

使用此过程,您不必采用其他任何东西,例如导入机制。只需使用from django.conf import settings. local.py 中的所有设置都会覆盖 settings.py 中的设置。

但是,这种可能的解决方案可以与上面给出的其他答案结合使用。

于 2021-12-10T13:13:32.793 回答