【发布时间】:2014-03-05 16:14:27
【问题描述】:
假设我的 Django 项目有一些全局设置,存储在一个文本文件中以便于编辑。我想加载设置,然后存储这些变量,以便可以从我的任何视图函数访问它们。但是,我读过 Django 中的全局变量是不鼓励的。那么,我该怎么做呢?我知道如何将这些变量存储在数据库中,但这对于存储一些简单的变量来说似乎有点过头了。
【问题讨论】:
标签: django
假设我的 Django 项目有一些全局设置,存储在一个文本文件中以便于编辑。我想加载设置,然后存储这些变量,以便可以从我的任何视图函数访问它们。但是,我读过 Django 中的全局变量是不鼓励的。那么,我该怎么做呢?我知道如何将这些变量存储在数据库中,但这对于存储一些简单的变量来说似乎有点过头了。
【问题讨论】:
标签: django
正如 alecxe 已经指出的,您可以使用settings 系统。这是设置必须在项目范围内使用的值的习惯方法。如果您也阅读了我链接的文档,您会发现它们很早就在该页面上介绍了如何设置您自己的设置。
当你使用 Django 的设置系统时,你不能做的一件事是引用模块顶层的设置。例如,如果您有一个执行此操作的视图:
from django.conf import settings
FOO = settings.FOO
(或 alecxe 的 print 语句。)这将防止值被覆盖。文档here 介绍了详细信息。我记得由于这个原因在测试中遇到了问题,因为我的一些测试试图覆盖默认值,但失败了。
我上面提到的设置系统应该用于在启动时设置并且之后不会更改的值。如果您想记录站点管理员可以在运行时更改的设置,您应该使用某种数据库。
【讨论】:
只需将变量存储在settings.py 中,这是存储项目特定设置的最佳和首选方式。然后,您可以随时通过导入 django.conf.settings 来访问它们:
from django.conf import settings
print settings.MY_SETTING
希望对您有所帮助。
【讨论】: