Django:从settings.py文件或基本配置文件导入变量是否更好?

时间:2012-01-13 19:10:03

标签: python django configuration settings

我想知道从settings.py文件中将变量导入视图是否更好?或者更好地使用所需的变量创建配置文件?

我倾向于为我的Django应用程序编写配置文件,在必要时从那里读取和导入变量。例如:

.configrc

[awesomeVariables]
someMagicNumber = 7

views.py

from ConfigParser import SafeConfigParser
#Open and parse the file
config = SafeConfigParser()
config.read(pathToConfig)
#Get variable
magicNumber   = config.get('awesomeVariables', 'someMagicNumber'))

然而,我注意到一些程序员更喜欢以下内容:

settings.py

SOME_MAGIC_NUMBER=7

views.py

import settings
magicNumber = settings.SOME_MAGIC_NUMBER

我很好奇不同方法的优点和缺点?可以直接从您的设置导入变量会损害架构的完整性吗?

3 个答案:

答案 0 :(得分:5)

这是一个判断电话。使用设置模块是“Django方式”,但您应该from django.conf import settings; settings.MY_SETTING,这将尊重DJANGO_SETTINGS_MODULE。但是Django只是Python;什么都不能阻止你使用ConfigParser。为了只有一个地方定义了这样的东西,我建议把它放在Django设置文件中 - 但如果你有理由不这样做,那就不要。

答案 1 :(得分:1)

使用配置文件完全不是Django。设置进入settings.py。期。对于特定于应用程序的设置,您只需在应用程序中设置默认值,并允许用户覆盖其项目的settings.py:

from django.conf import settings

SOME_MAGIC_NUMBER = settings.SOME_MAGIC_NUMBER if hasattr(settings, 'SOME_MAGIC_NUMBER') else 0
# Where `0` is the default value

答案 2 :(得分:1)

还有一个用于在db中动态存储设置的应用程序。也许你觉得它很有用。 django-constance