Django:全局设置变量

时间:2014-03-05 16:14:28

标签: django

假设我的Django项目有一些全局设置,存储在文本文件中以便于编辑。我想加载设置,然后存储这些变量,以便可以从任何视图函数访问它们。但是,我已经读过Django中的全局变量是不鼓励的。那么,我该怎么做呢?我知道如何将这些变量存储在数据库中,但这对于存储一些简单的变量来说似乎有点过分了。

2 个答案:

答案 0 :(得分:9)

正如alecxe已经指出的那样,您可以使用settings系统。这是设置必须在项目范围内使用的值的常用方法。如果您阅读了我已链接的文档,您会看到他们很早就会在该页面上介绍如何设置您自己的设置。

使用Django的设置系统时,您不能做的一件事是参考模块顶层的设置。例如,如果您有一个视图执行此操作:

from django.conf import settings

FOO = settings.FOO

(或者alecxe的print语句。)这将阻止值被覆盖。文档here详细介绍了该文档。我记得在测试中遇到了问题,因为我的一些测试试图覆盖默认值,但是失败了。

我上面提到的设置系统应该用于在启动时设置的值,之后不要更改。如果要记录网站管理员在运行时可以更改的设置,则应使用某种类型的数据库。

答案 1 :(得分:5)

只需将变量存储在settings.py中,这是存储项目特定设置的最佳和可取的方式。然后,您始终可以通过导入django.conf.settings

来访问它们
from django.conf import settings

print settings.MY_SETTING

希望有所帮助。