Settings
- 有效的设置项
- Deprecated settings
Warning
覆写设置项时,特别是在默认值为空元组()或是空字典{}的情况下,要格外谨慎。比如MIDDLEWARE_CLASSES 和 TEMPLATE_CONTEXT_PROCESSORS 。要确保其包含你要用到的Django特性。
有效的设置项
接下来我们会按照字母顺序展示所有的可用设置项及其默认值。
ABSOLUTE_URL_OVERRIDES
默认值: {} (空字典)
该设置项为一个字典,用于将 "app_label.model_name" 字符串与函式进行映射。函式接受一个model对象做为参数并返回该对象的网址。 这相当于在其中的每个应用的底层上重载 get_absolute_url() 方法,例如:
ABSOLUTE_URL_OVERRIDES = {
'blogs.weblog': lambda o: "/blogs/%s/" % o.slug,
'news.story': lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
注意用于该设置项的model字符串无论其实际名称是什么,在此处都应该设为小写。
ADMIN_FOR
默认项: () (空元组)
一个settings元组,用于存放django自带管理后台要用到的 settings 模块(格式如 'foo.bar.baz' ),
自带的管理后台在对models,视图和模板标签的自动内省的文档中会用到该设置。
ADMINS
默认值: () (空元组)
该元组内存放的是可以接收代码错误通知的用户。当 DEBUG=False 时,如果某个视图(view)抛出异常,Django就会将带有详细异常信息的以邮件的形式发送给上述用户。 元组中的每个成员应该是一个形如(完整名称,邮件地址)的二元组,例如:
(('John', 'john@example.com'), ('Mary', 'mary@example.com'))
要注意:无论何时,只要有错误发生,元组中的 所有用户 都会收到Django发送的邮件。 wrongway特别提醒:有时这些错误会很多很烦,比如某些2B爬虫访问了某个不存的网址。 详见 Error reporting
ALLOWED_INCLUDE_ROOTS
默认值: () (空元组)
该元组内存放的是表示嵌入文件根路径的字符串——只有在某字符串存在于该元组的情况下,Django的 {% ssi %} 模板标签才会嵌入以其为前缀的文件。 这样做是出于安全考虑,从而使模板作者不能访问到他们不该访问的文件。
举个例子,我们将 ALLOWED_INCLUDE_ROOTS 设为 ('/home/html', '/var/www') , 那么 {% ssi /home/html/foo.txt %}是有效的,而 ``{% ssi /etc/passwd %}`` 则是无效的。
APPEND_SLASH
默认值: True
设为 True 时,如果请求的URL与URLconf中的任何一个URL模式都不匹配,且URL并没有以斜杠结尾,那么Django就会重定向到以斜杠结尾的相同网址。 要注意的是,重定向可能会导致某些POST请求所提交的数据丢失。
APPEND_SLASH 设置项只有在安装了 CommonMiddleware 的情况下才会生效。 (详见 Middleware)。 也可参见PREPEND_WWW 。
AUTHENTICATION_BACKENDS
默认值: ('django.contrib.auth.backends.ModelBackend',)
是一个存放用户认址后端类(authentication backend class)的元组,用于于认证用户详见 用户认证后端文档 。
AUTH_PROFILE_MODULE
默认值: 未定义
当前站点使用的用户附加属性模型。详面 Storing additional information about users.
CACHES
默认值:
{
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
}
}
该设置项包含了Django会用到的所有缓存设置。这是一个嵌套的字典,其中的每个键名(即缓存项别名)都对应一个存放缓存选项的字典。
CACHES 字典中必须包含一个 default 缓存;其他缓存可以随意命名。 如果你正在使用缓存的并非是本地内存缓存,或者你想定义多个缓存,就要用到其他选项。 以下就是可用的缓存选项:
BACKEND
默认值: '' (空字符串)
要使用的缓存后端。内置的缓存后端有以下几种:
- 'django.core.cache.backends.db.DatabaseCache'
- 'django.core.cache.backends.dummy.DummyCache'
- 'django.core.cache.backends.filebased.FileBasedCache'
- 'django.core.cache.backends.locmem.LocMemCache'
- 'django.core.cache.backends.memcached.MemcachedCache'
- 'django.core.cache.backends.memcached.PyLibMCCache'
我们可以将:setting:BACKEND <CACHE-BACKEND> 设为某个缓存后端的可访问路径(例如mypackage.backends.whatever.WhateverCache),以使用非Django内置的第三方缓存。 您不妨参考其他后端,从头编写一个完整的新缓存后端,以此做为一个读者练习。
Note
在Django1.3之前,我们使用以后端类型名为前缀的URI来表示Django内置的缓存后端(比如,使用``’db://tablename’`` 表示使用数据库缓存后端)。 我们不建议使用这种格式,它会在Django1.5中彻底去除。
KEY_FUNCTION
一个形如’xxxx.xxxx.xxx.xxx’的路径字符串,表示一个函式的可访问路径。该函式决定了如何将前缀,版本以及键名拼装成最终的缓存键。 默认的实现方法如下:
def make_key(key, key_prefix, version):
return ':'.join([key_prefix, str(version), smart_str(key)])
如果你想使用自定义的函式,新函式只需与上述参数相同即可。
详见 缓存文档 。
KEY_PREFIX
默认值: '' (空字符串)
做为前缀自动被Django包含在所有缓存键名中。
详见 缓存文档 。
LOCATION
默认值: '' (空字符串)
要使用的缓存位置。它可以是文件系统缓存的一个目录,也可以是memcache服务器的主机和端口,或是仅仅是本地内存缓存的一个简单标识名称:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
OPTIONS
默认值: None
传递给缓存后端的其他选项。根据所使用的缓存后端不同,使用不同的参数。
具体的参数列表详见 缓存后端 ,以了解您所选用的后端使用哪些参数。
TIMEOUT
默认值: 300
设置缓存项的过期时间,以秒为单位。
VERSION
默认值: 1
由Django生成的用于组合缓存键名的默认版本数字。
详见 cache documentation 。
CACHE_MIDDLEWARE_ALIAS
默认值: default
用于缓存中间件的缓存链接。
CACHE_MIDDLEWARE_ANONYMOUS_ONLY
默认值: False
如果为 True ,只有匿名请求(例如非登录用户的请求)才会被缓存。否则,缓存中间件会缓存每一张没有GET和POST传入参数的网页。
将该设置设为 True 时,要在middleware中添加 AuthenticationMiddleware 。
详见 Django’s cache framework.
CACHE_MIDDLEWARE_KEY_PREFIX
默认值: '' (空字符串)
缓存中间件要用到的缓存前缀。
详见 Django’s cache framework.
CACHE_MIDDLEWARE_SECONDS
默认值: 600
使用缓存中间件或是 cache_page() 装饰器时缓存一个页面的过期时间,单位是秒。
详见 Django’s cache framework 。
CSRF_COOKIE_DOMAIN
默认值: None
设置启用CSRF cookie的站点。它可以轻易地将跨站请求伪造与正常的跨子站请求区分开。 该设置项的格式应该类似".lawrence.com" ,以允许由一个子站表单发出的POST请求可以被另一个子站的视图(view)所接收。
请注意该设置项的存在并不意味着:在默认情况下,Django的CSRF防护对于跨子站攻击就是安全的。详见 CSRF 限制一节。
CSRF_COOKIE_NAME
默认值: 'csrftoken'
用于CSRF认证令牌的cookie名称。可以是任何名称,详见 Cross Site Request Forgery protection.
CSRF_COOKIE_PATH
默认值: '/'
应用于CSRF cookie的路径。它应该匹配你的Django应用的URL路径,或是该路径的父路径。
如果你在同一台主机上运行多个Django实例时,该设定会非常有用。它们各自使用不同的cookie路径,每个实例只能看到自己的CSRF cookie。
CSRF_COOKIE_SECURE
默认值: False
是否对CSRF cookie进行加密。如果设为 True ,cookie将被标识为 “secure” ,这意味着浏览器确保该cookie只能通过HTTPS链接发送。
CSRF_FAILURE_VIEW
默认值: 'django.views.csrf.csrf_failure'
一个形如’xxxx.xxxx.xxx.xxx’的函式路径字符串,该视图函式在请求被CSRF防护拒绝时发挥作用。 该函式结构如下:
def csrf_failure(request, reason="")
其中的 reason 是一个短消息(对于开发者或是日志比较有用,一般用户对此并不关注) ,表示当前请求被拒绝的原因。详见 Cross Site Request Forgery protection.
DATABASES
默认值: {} (空字典)
该设置项是一个嵌套的字典,包含了Django会用到的所有数据库设置。 其中的每个字典项都以数据库别名做为键值,对应一个存放该数据库选项的字典。
DATABASES 字典中必须定义一个 default 数据库;其他数据库可以随意命名。
最简单的设置就是安装的一个单独的SQLite文件数据库。设置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'mydatabase'
}
}
对于其他数据库后端或是更灵活的SQLite配置而言,就要用到其他选项,下面就介绍其中所有的数据库选项。
ENGINE
默认值: '' (空符串)
要使用的数据库后端。Django内置的数据库后端有:
- 'django.db.backends.postgresql_psycopg2'
- 'django.db.backends.mysql'
- 'django.db.backends.sqlite3'
- 'django.db.backends.oracle'
我们可以通过设置 ENGINE 而使用非Django提供的第三方数据库后端——将其设为某个后端的可访问路径,例如mypackage.backends.whatever)。您不妨参考其他后端,从头编写一个完整的新数据库后端,以此做为一个读者练习。
Note
在Django1.2之前,我们使用一个短名称来表示Django内置的数据库后端(比如,使用``’sqlite3’`` 表示使用SQLite数据库后端)。 我们不建议使用这种格式,它已在Django1.4中彻底去除 。
HOST
默认值: '' (空字符串)
表示连接数据库使用哪台主机。空字符串表示本地(localhost)。使用SQLite时该项无效。
如果我们使用的是MySQL,且设置值以反斜杠 ('/') 开头时,MySQL将通过Unix socket链接某个指定的socket。举个例子:
"HOST": '/var/run/mysql'
同样仍是使用Mysql,如果该值并未以反斜杠开头,那么该值就表示某个主机名或是IP。
使用PostgreSQL时,空字符串表示使用Unix domain socket进行连接,而不是进行本地连接。 如果你想明确指定PostgreSQL连接本地机器,此外就要填写为 localhost 。
NAME
默认值: '' (空字符串)
使用的数据库名称。对SQLite而言,该设置就是数据库文件的完整路径。要注意的是,指定文件路径时 一定要使用斜杠,即便是在Windows平台也是如此 (比如 C:/homes/user/mysite/sqlite3.db)。
OPTIONS
默认值: {} (空字典)
连接数据库时要用到的其他选项。Django根据不同的数据库后端使用不同的选项。
具体的选项信息可参见 数据库后端 文档,以了解您选用的数据库后端有哪些可用的选项。
PASSWORD
默认值: '' (空字符串)
连接数据库时使用的密码。使用SQLite时此项无效。
PORT
默认值: '' (Empty string)
连接数据库时使用的端口。空字符串表示使用默认端口。使用SQLite时此项无效。
USER
默认值: '' (Empty string)
连接数据库时使用的用户名。使用SQLite时此项无效。
TEST_CHARSET
默认值: None
创建测试数据库时使用的字符集编码方案。因为该值是直接传给数据库的,所以它的格式是由数据库后端指定的。
该设置项对 PostgreSQL (postgresql_psycopg2) 和 MySQL (mysql) 后端有效。
TEST_COLLATION
默认值: None
创建测试数据库时使用的排序顺利。因为该值是直接传给后端的,所以它的格式由数据库后端所决定。
仅仅支持 mysql 后端 (详见 MySQL manual )。
TEST_DEPENDENCIES
默认值: 对其他非 default 且没有依赖关联的数据库而言,默认值就是 ['default'] 。
数据库依赖关