django settings配置参数详解

Django的settings配置中包含大量选项,如ABSOLUTE_URL_OVERRIDES用于重载模型的get_absolute_url方法,ALLOWED_INCLUDE_ROOTS用于限制模板中嵌入文件的根路径,AUTHENTICATION_BACKENDS定义认证用户的方式,DATABASES设置数据库连接参数,CACHES配置缓存系统,以及其它如CSRF_COOKIE_SECURE、TIME_ZONE等设置。这些配置项在Django应用中起到关键作用,影响着应用的行为和性能。
摘要由CSDN通过智能技术生成

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

New in Django 1.3: Please see the release notes

默认值:

{
      
    '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_FAILURE_VIEW

New in Django 1.2: Please see the release notes

默认值: 'django.views.csrf.csrf_failure'

一个形如’xxxx.xxxx.xxx.xxx’的函式路径字符串,该视图函式在请求被CSRF防护拒绝时发挥作用。 该函式结构如下:

def csrf_failure(request, reason="")

其中的 reason 是一个短消息(对于开发者或是日志比较有用,一般用户对此并不关注) ,表示当前请求被拒绝的原因。详见 Cross Site Request Forgery protection.

DATABASES

New in Django 1.2: Please see the release notes

默认值: {} (空字典)

该设置项是一个嵌套的字典,包含了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
New in Django 1.3: Please see the release notes

默认值: 对其他非 default 且没有依赖关联的数据库而言,默认值就是 ['default'] 。

数据库依赖关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值