Heroku如何处理Django设置?

时间:2012-09-03 00:28:42

标签: django heroku

我正在尝试为遵循Heroku推荐结构的Django应用程序创建一个目录结构,如page底部所示。如您所见,他们创建了一个“设置”目录,其中包含根据项目部署到哪个层而读取的各个设置文件(例如dev.py)。

现在我原本期望会有一个“settings.py”文件与设置目录处于同一级别,该目录将从settings目录中的某个设置文件导入。但是,他们的图表不会显示任何此类“settings.py”文件,只显示目录。如何在没有顶级settings.py文件的情况下执行相应的设置文件?

就像一个实验一样,我创建了一个settings.py文件,该文件与settings目录位于同一级别。问题是,当我执行“runserver”时,设置目录中的 init .py文件会导致错误:“'设置'对象没有'ROOT_URLCONF'”我猜是有某种排序名称冲突,因为如果我将设置目录的名称更改为“conf”,我不会收到此错误。

Heroku人可以假设用户正在某处设置DJANGO_SETTINGS_MODULE吗?如果没有,他们如何阅读正确的设置文件?

感谢。

1 个答案:

答案 0 :(得分:1)

当python是名为settings的导入模块时,它会查找名为settings.py的文件或名为settings的目录(python模块),其中包含__init__.py 。这就是python模块系统的工作原理。

从那里,您可以决定在init文件中导入哪个设置文件,从proddev等内容导入内容。我想这应该在某个地方的那个页面上解释,但我一眼就看不到它。

至于Heroku,它不会假设任何东西,并且使用django默认值。因此正在导入模块settings

另外,我不反对在项目仓库中使用dev / prod设置,但heroku为您提供了一种使用ENV变量动态更改配置的非常好的方法。你可以在他们的(非常好的)django tutorial上找到更多信息。