from django.conf import settings
settings.configure(DEBUG=True, TEMPLATE_DEBUG=True,
TEMPLATE_DIRS=('/home/web-apps/myapp', '/home/web-apps/base'))
通用 configure()
可以设置任何配置项,每个参数对应一个值。参数名称必须大写,
而且参数名必须是真实存在。没有在 configure()
中出现的设置项在随后用到时,
仍会使用默认值。
如果你并不想使用整个框架,仅仅是其中一小部分时,如上述这般配置Django是非常必要的。
事实上,我们建议您这样做。
因此,通过 settings.configure()
配置django时,并不会对当前进程的环境变量做任何修改。
(可以查看:setting:TIME_ZONE 了解为什么要这么做)。这意味着在上述情况下你仍然完全掌控着当前环境。
定制默认配置项
如果你实在不想使用``django.conf.global_settings``,而想自定义配置默认值,
你可以在调用 configure()
时使用 default_settings
参数(或是默认做为第一个参数传入)。该参数是一个提供默认值的模块或是类,
在下面这个例子中,由 myapp_defaults
提供默认值,并令 DEBUG
被置为 True
而不是从 myapp_defaults
中获取:
from django.conf import settings
from myapp import myapp_defaults
settings.configure(default_settings=myapp_defaults, DEBUG=True)
接下来例子使用 myapp_defaults
做为一个位置参数,这和上面的效果是等同的:
settings.configure(myapp_defaults, DEBUG = True)
一般来说,没必要自行设置默认值。Django的默认设置是比较宽松的,你可以放心地使用。
要注意的是,如果你传入了新的默认模块,那它就会完全 替换 Django本身的默认设置。因此,
你必须为接下来可能会用到的所有设置项都重新指定默认值。查看
django.conf.settings.global_settings
了解全部默认值。
configure() 或 DJANGO_SETTINGS_MODULE 两者必用其一
在没有设置 DJANGO_SETTINGS_MODULE
环境的情况下,就 必须 在运行读取配置项的代码之前就调用 configure()
。
如果你没有设置 set DJANGO_SETTINGS_MODULE
也没有调用 configure()
,
那么Django会在第一次访问配置项时抛出``ImportError`` 异常。
如果已经调了 DJANGO_SETTINGS_MODULE
,再调用 configure()
的话,
Django也会抛出一个 RuntimeError
异常,表明已经配置了settings。
重复调用 configure()
或是在访问任何一个配置项后再调用 configure()
,也会引起错误。
这意味着:确保要使用 configure()
或 DJANGO_SETTINGS_MODULE
其中一个,不要多,也不要少。