设置

警告

当您重写设置时,请特别注意,如果默认值为非空列表或字典,例如MIDDLEWARE_CLASSESSTATICFILES_FINDERS 确保组件符合Django的特性,你想使用的话。

核心设置

这里是一些Django的核心设置和它们的默认值。 由contrib apps提供的设置,它的主题索引在下面列出。 对于介绍材料, 请看 settings topic guide.

ABSOLUTE_URL_OVERRIDES

Default: {} (默认为空的字典)

这个字典把"app_label.model_name"字符串映射到带着一个模型对象的函数上并返回一个URL。 这是一种在每次安装的基础上插入或覆盖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),
}

注意这里设置中使用的模型对象名称一定要小写,与模型的类名的实际情况无关

ADMINS

默认值:[](空列表)

所有获得代码错误通知的人的列表。 DEBUG=False ,并且一个视图引发了异常, Django 会给这些人发一封含有完整异常信息的电子邮件。 列表中的每个项目都应该是(全名,电子邮件地址)的元组。 例如:

[('John', 'john@example.com'), ('Mary', 'mary@example.com')]

注意无论何时发生错误Django都会向这里的所有人发送邮件all 查看Error reporting 了解更多信息。

ALLOWED_HOSTS

默认值:[](空列表)

代表Django站点可以提供的主机/域名的字符串列表。 This is a security measure to prevent HTTP Host header attacks, which are possible even under many seemingly-safe web server configurations.

列表中的值要是完全合格的名称 (e.g. 'www.example.com'), 这种情况下,他们将会正确地匹配请求的Host header (忽略大小写,不包括端口).。 开始处的英文句号能够用于作为子域名的通配符: '.example.com' 会匹配example.com, example.com, 以及任何www.example.com. 的子域名。 '*'将匹配任何内容;在这种情况下,您有责任提供自己对Host标头的验证(可能在中间件中);如果是这样,中间件必须首先列在MIDDLEWARE中)。

Django还允许任何条目的完全限定域名(FQDN) 某些浏览器在执行主机验证时,Django将在Host头中包含一个尾随点。

如果Host header(头信息)(或者是X-Forwarded-Host 如果USE_X_FORWARDED_HOST被启用的话) 不匹配这个列表中的任何值, 那么 django.http.HttpRequest.get_host() 函数将会抛出一个SuspiciousOperation异常.

DEBUGTrueALLOWED_HOSTS为空时,主机根据['localhost', '127.0.0.1', '[:: 1]']

ALLOWED_HOSTS在运行测试时也会检查checked when running tests

此验证仅适用于get_host();如果您的代码直接从request.META访问Host,您将绕过此安全保护。

在Django更改1.11:

在旧版本中,运行测试时未检查ALLOWED_HOSTS

在旧版本中,如果DEBUG=True,则未检查ALLOWED_HOSTS 这也在Django 1.10.3,1.9.11和1.8.16中发生了变化,以防止DNS重新绑定攻击。

APPEND_SLASH

默认值:True

当设定为True 时,如果请求的URL 没有匹配URLconf 里面的任何URL 并且没有以/(斜杠)结束,将重定向到以/ 结尾的URL。 需要注意的是任何重定向都有可能导致post数据的丢失。

APPEND_SLASH 设置只有在安装了CommonMiddleware 时才用到(参见Middleware)。 另见PREPEND_WWW

CACHES

默认:

{
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    }
}

一个字典包含所有缓存要使用的设置 它是一个嵌套字典,其内容将高速缓存别名映射到包含单个高速缓存的选项的字典中。

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'

通过将BACKEND设置为缓存后端类的完全限定路径(即mypackage.backends.whatever.WhateverCache),您可以使用未随Django提供的缓存后端。 )。

KEY_FUNCTION

包含函数(或任何可调用)的虚线路径的字符串,定义如何将前缀,版本和键组成最终缓存键。 默认实现等效于以下函数:

def make_key(key, key_prefix, version):
    return ':'.join([key_prefix, str(version), key])

你可以使用任何你想要的键功能,只要它有相同的参数签名。

有关详细信息,请参阅cache documentation

KEY_PREFIX

默认值:''(空字符串)

一个字符串,将被自动包括(默认情况下预置)到Django服务器使用的所有缓存键。

有关详细信息,请参阅cache documentation

LOCATION

默认值:''(空字符串)

要使用的缓存的位置。 这可能是文件系统缓存的目录,内存缓存服务器的主机和端口,或者只是本地内存缓存的标识名称。 例如:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}

OPTIONS

默认值:None

额外的参数传递到缓存后端。 可用参数因缓存后端而异。

有关可用参数的一些信息,请参见cache arguments文档。 有关详细信息,请参阅后端模块自己的文档。

TIMEOUT

默认值:300

高速缓存的有效时间。 如果此设置的值为None,则缓存将不会过期。

VERSION

默认值:1

Django服务器生成的缓存键的默认版本号。

有关详细信息,请参阅cache documentation

CACHE_MIDDLEWARE_ALIAS

默认值:default

用于cache middleware的高速缓存连接。

CACHE_MIDDLEWARE_KEY_PREFIX

默认值:''(空字符串)

将由cache middleware生成的高速缓存键前缀的字符串。 该前缀与KEY_PREFIX设置组合;它不会取代它。

请参阅Django’s cache framework

CACHE_MIDDLEWARE_SECONDS

默认值:600

缓存cache middleware的页面的默认秒数。

请参阅Django’s cache framework

CSRF_USE_SESSIONS

Django中的新功能1.11。

默认值:False

是否将CSRF令牌存储在用户的会话中而不是在cookie中。 它需要使用django.contrib.sessions

将CSRF令牌存储在Cookie中(Django的默认值)是安全的,但将其存储在会话中是其他Web框架中的常见做法,因此有时由安全审核员要求。

CSRF_FAILURE_VIEW

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

当传入请求被CSRF protection拒绝时,要使用的视图功能的虚线路径。 该函数应该有这个签名:

def csrf_failure(request, reason=""):
    ...

其中reason是指示请求被拒绝的原因的短消息(针对开发人员或记录,而不是最终用户)。 它应该返回一个HttpResponseForbidden

django.views.csrf.csrf_failure()接受默认为'403_csrf.html'的附加template_name参数。 如果具有该名称的模板存在,则将用于呈现页面。

在Django更改1.10:

template_name参数和搜索名为403_csrf.html的模板的行为已添加到csrf_failure()中。

CSRF_HEADER_NAME

默认值:'HTTP_X_CSRFTOKEN'

用于CSRF认证的请求头的名称。

request.META中的其他HTTP标头一样,从服务器接收的标题名称通过将所有字符转换为大写字母进行归一化,用下划线替换任何连字符,并添加'HTTP_' 例如,如果您的客户端发送了一个'X-XSRF-TOKEN'头,则该设置应为'HTTP_X_XSRF_TOKEN'

CSRF_TRUSTED_ORIGINS

默认值:[](空列表)

作为不安全请求的可信来源的主机列表(例如POST)。 对于secure不安全请求,Django的CSRF保护要求请求具有与Host头中存在的原点相匹配的Referer头。 这样就阻止了例如subdomain.example.comapi.example.com成功的POST请求。 如果您需要通过HTTPS的跨源不安全请求,请继续执行此示例,将"subdomain.example.com"添加到此列表中。 该设置还支持子域,所以您可以添加".example.com",以允许从example.com的所有子域进行访问。

DATABASES

Default: {} (默认为空的字典)

一个字典,包含Django 将使用的所有数据库的设置。 它是一个嵌套字典,其内容将数据库别名映射到包含单个数据库选项的字典。

DATABASES设置必须配置default数据库;还可以指定任何数量的附加数据库。

最简单的配置文件可能是使用SQLite 建立一个数据库。 这可以使用以下配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase',
    }
}

当连接其他数据库后端,比如MySQL、Oracle 或PostgreSQL,必须提供更多的连接参数。 关于如何指定其他的数据库类型,参见后面的ENGINE 设置。 下面的例子用于PostgreSQL:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

下面是更复杂的配置可能需要的选项:

ATOMIC_REQUESTS

默认值:False

将此设置为True将每个视图包装在此数据库的事务中。 参见Tying transactions to HTTP requests

AUTOCOMMIT

默认值:True

如果你需要disable Django’s transaction management并自己实现,设置它为False

ENGINE

默认值:''(空字符串)

使用的数据库后端。 内建的数据库后端有:

  • 'django.db.backends.postgresql'
  • 'django.db.backends.mysql'
  • 'django.db.backends.sqlite3'
  • 'django.db.backends.oracle'

你可以不使用Django 自带的数据库后端,通过设置ENGINE 为一个合法的路径即可(例如mypackage.backends.whatever)。

HOST

默认值:''(空字符串)

连接数据库时使用哪个主机。 空字符串意味着采用localhost 作为主机。 SQLite 不需要这个选项。

如果其值以斜杠('/')开始并且你使用的是MySQL,MySQL 将通过Unix socket 连接。 像这样:

"HOST": '/var/run/mysql'

如果你使用的是MySQL 并且该值不是以斜杠开头,那么将假设该值为主机。

如果你使用的是PostgreSQL,默认情况下(空HOST),数据库的连接通过UNIX domain sockets(pg_hba.conf 中的‘local’行)。 如果你的UNIX domain socket 不在标准的路径,则使用unix_socket_directory 中的postgresql.conf 值。 如果你想通过TCP sockets 连接,请设置HOST 为‘localhost’ 或 ‘127.0.0.1’(pg_hba.conf 中的‘host’行)。 在Windows上,你应该始终定义HOST,因为其不可以使用UNIX domain sockets。

NAME

默认值:''(空字符串)

使用的数据库名称。 对于SQLite,它是数据库文件的完整路径。 指定路径时,请始终使用前向的斜杠,即使在Windows 上(例如C:/homes/user/mysite/sqlite3.db)。

CONN_MAX_AGE

默认:0

数据库连接的存活时间,以秒为单位。 0 表示在每个请求结束时关闭数据库连接 —— 这是Django 的历史遗留行为,None 表示无限的持久连接。

OPTIONS

Default: {} (默认为空的字典)

连接数据库时使用的额外参数。 可用的参数与你的数据库后端有关。

Database Backends的文档中可以找到可用的参数的一些信息。 有关详细信息,请参阅后端模块自己的文档。

PASSWORD

默认值:''(空字符串)

连接数据库时使用的密码。 SQLite 不需要这个选项。

PORT

默认值:''(空字符串)

连接数据库时使用的端口。 空字符串表示默认的端口。 SQLite 不需要这个选项。

TIME_ZONE

默认值:None

表示存储在此数据库中的数据时区的时区(假定它不支持时区)或None的字符串。 在一般的TIME_ZONE设置中接受相同的值。

这允许与在本地时间而不是UTC存储数据时间的第三方数据库进行交互。 为避免DST更改发生问题,您不应该为Django管理的数据库设置此选项。

USE_TZTrue,数据库不支持时区(例如SQLite,MySQL,Oracle)时,Django根据此选项在本地时间内读取和写入数据时间被设置,如果不是UTC。

USE_TZTrue,数据库支持时区(例如PostgreSQL)时,设置此选项是错误的。

USE_TZFalse时,设置此选项是错误的。

DISABLE_SERVER_SIDE_CURSORS

Django中的新功能1.11.1。

默认值:False

如果要禁用使用QuerySet.iterator()的服务器端游标,请将其设置为True Transaction pooling and server-side cursors描述了用例。

这是一个PostgreSQL特定的设置。

USER

默认值:''(空字符串)

连接数据库时使用的用户名。 SQLite 不需要这个选项。

TEST

Default: {} (默认为空的字典)

测试数据库设置字典有关测试数据库的创建和使用的更多细节,请参见The test database

以下是测试数据库配置的示例:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'USER': 'mydatabaseuser',
        'NAME': 'mydatabase',
        'TEST': {
            'NAME': 'mytestdatabase',
        },
    },
}

TEST字典中的以下键可用:

CHARSET

默认值:None

字符集设置用于指定数据库编码格式。 该设置的值会直接传给数据库,所以它的格式是由指定的数据库来决定的。

PostgreSQLpostgresql)和MySQLmysql)后端支持。

COLLATION

默认值:None

创建测试数据库时要使用的归类顺序。 此值直接传递到后端,因此其格式是后端特定的。

仅支持mysql后端(有关详细信息,请参阅MySQL手册)。

DEPENDENCIES

默认值:['default'],对于除了default之外的所有数据库,没有依赖关系。

数据库的创建顺序依赖性。 有关详细信息,请参阅有关controlling the creation order of test databases的文档。

MIRROR

默认值:None

此数据库在测试期间应映射的数据库的别名。

此设置存在以允许测试多个数据库的主/副本(由某些数据库称为主/从属)配置。 有关详细信息,请参阅有关testing primary/replica configurations的文档。

NAME

默认值:None

运行测试套件时要使用的数据库的名称。

如果默认值(None)与SQLite数据库引擎一起使用,则测试将使用内存驻留数据库。 对于所有其他数据库引擎,测试数据库将使用名称'test _' + DATABASE_NAME

请参见The test database

SERIALIZE

布尔值以控制在运行测试之前缺省测试运行器是否将数据库序列化为内存中的JSON字符串(用于在没有事务的情况下在测试之间恢复数据库状态)。 如果您没有任何具有serialized_rollback=True的测试类,您可以将其设置为False以加快创建时间。

TEMPLATE
Django中的新功能1.11。

这是一个PostgreSQL特定的设置。

创建测试数据库的模板的名称(例如'template0')。

CREATE_DB

默认值:True

这是Oracle特定的设置。

如果设置为False,则测试表空间将不会在测试开始时自动创建或在结尾处丢弃。

CREATE_USER

默认值:True

这是Oracle特定的设置。

如果设置为False,测试用户将不会在测试开始时自动创建,并在最后删除。

USER

默认值:None

这是Oracle特定的设置。

连接到将在运行测试时使用的Oracle数据库时使用的用户名。 如果没有提供,Django将使用'test _' + USER

PASSWORD

默认值:None

这是Oracle特定的设置。

连接到运行测试时将使用的Oracle数据库时使用的密码。 如果没有提供,Django将会生成一个随机密码。

在Django更改1.11:

旧版本使用硬编码的默认密码。 这在1.10.3,1.9.11和1.8.16也有变化,以解决可能的安全隐患。

TBLSPACE

默认值:None

这是Oracle特定的设置。

运行测试时将使用的表空间的名称。 如果没有提供,Django将使用'test _' + USER

TBLSPACE_TMP

默认值:None

这是Oracle特定的设置。

运行测试时将使用的临时表空间的名称。 如果未提供,Django将使用'test _' + USER +

DATAFILE

默认值:None

这是Oracle特定的设置。

要用于TBLSPACE的数据文件的名称。 如果没有提供,Django将使用TBLSPACE + '。dbf'

DATAFILE_TMP

默认值:None

这是Oracle特定的设置。

要用于TBLSPACE_TMP的数据文件的名称。 如果未提供,Django将使用TBLSPACE_TMP + '。dbf'

DATAFILE_MAXSIZE

默认值:'500M'

这是Oracle特定的设置。

允许DATAFILE增长到的最大大小。

DATAFILE_TMP_MAXSIZE

默认值:'500M'

这是Oracle特定的设置。

允许DATAFILE_TMP增长到的最大大小。

DATA_UPLOAD_MAX_MEMORY_SIZE ¶ T0>

Django中的新功能1.10。

默认值:2621440(即2.5 MB)。

SuspiciousOperationRequestDataTooBig)之前,请求主体可能出现的最大大小(以字节为单位)。 当访问request.bodyrequest.POST时,检查完成,并根据除了任何文件上传数据的总请求大小计算。 您可以将其设置为None以禁用检查。 预期会收到异常大的表单帖子的应用程序应调整此设置。

请求数据量与处理请求所需的内存量相关联,并填充GET和POST字典。 如果不选中,大型请求可以用作拒绝服务攻击向量。 由于Web服务器通常不会执行深度请求检查,所以不可能在该级别执行类似的检查。

另见FILE_UPLOAD_MAX_MEMORY_SIZE

DATA_UPLOAD_MAX_NUMBER_FIELDS ¶ T0>

Django中的新功能1.10。

默认值:1000

SuspiciousOperationTooManyFields)之前,可以通过GET或POST接收到的最大参数数。 您可以将其设置为None以禁用检查。 期望收到异常大量表单字段的应用程序应调整此设置。

请求参数的数量与处理请求所需的时间量相关联,并填充GET和POST字典。 如果不选中,大型请求可以用作拒绝服务攻击向量。 由于Web服务器通常不会执行深度请求检查,所以不可能在该级别执行类似的检查。

DATABASE_ROUTERS

默认值:[](空列表)

将用于确定在执行数据库查询时要使用哪个数据库的路由器列表。

请参阅有关automatic database routing in multi database configurations的文档。

DATE_FORMAT

默认值:'N j, Y' 二月 4, 2003)

用于在系统任何部分中显示日期字段的默认格式。 请注意,如果USE_L10N设置为True,则区域设置格式具有更高的优先级,将会应用。 请参阅allowed date format strings

另请参阅DATETIME_FORMATTIME_FORMATSHORT_DATE_FORMAT

DATE_INPUT_FORMATS

默认:

[
    '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
    '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
    '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
    '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
    '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
]

在日期字段中输入数据时将被接受的格式列表。 格式将按顺序尝试,使用第一个有效的格式。 请注意,这些格式字符串使用Python的datetime module syntax,而不是来自date模板过滤器的格式字符串。

USE_L10NTrue时,区域设置格式具有更高的优先级,将会应用。

另请参阅DATETIME_INPUT_FORMATSTIME_INPUT_FORMATS

DATETIME_FORMAT

默认值:'N j, Y, P' 二月 4, 2003年, 4 下午)

用于在系统任何部分中显示datetime字段的默认格式。 请注意,如果USE_L10N设置为True,则区域设置格式具有更高的优先级,将会应用。 请参阅allowed date format strings

另请参阅DATE_FORMATTIME_FORMATSHORT_DATETIME_FORMAT

DATETIME_INPUT_FORMATS

默认:

[
    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
    '%Y-%m-%d %H:%M:%S.%f',  # '2006-10-25 14:30:59.000200'
    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
    '%Y-%m-%d',              # '2006-10-25'
    '%m/%d/%Y %H:%M:%S',     # '10/25/2006 14:30:59'
    '%m/%d/%Y %H:%M:%S.%f',  # '10/25/2006 14:30:59.000200'
    '%m/%d/%Y %H:%M',        # '10/25/2006 14:30'
    '%m/%d/%Y',              # '10/25/2006'
    '%m/%d/%y %H:%M:%S',     # '10/25/06 14:30:59'
    '%m/%d/%y %H:%M:%S.%f',  # '10/25/06 14:30:59.000200'
    '%m/%d/%y %H:%M',        # '10/25/06 14:30'
    '%m/%d/%y',              # '10/25/06'
]

在datetime字段中输入数据时将被接受的格式列表。 格式将按顺序尝试,使用第一个有效的格式。 请注意,这些格式字符串使用Python的datetime module syntax,而不是来自date模板过滤器的格式字符串。

USE_L10NTrue时,区域设置格式具有更高的优先级,将会应用。

另请参阅DATE_INPUT_FORMATSTIME_INPUT_FORMATS

DEBUG

默认值:False

打开/关闭调试模式的布尔值。

部署网站的时候不要把DEBUG 打开.

你明白了吗? 部署网站的时候一定不要把 DEBUG 打开.

调试模式的一个重要特性是显示错误页面的细节。 DEBUGTrue的时候,若你的应用产生了一个异常,Django 会显示追溯细节,包括许多环境变量的元数据, 比如所有当前定义的Django设置(在settings.py中的).

作为安全措施,Django将包含可能敏感的设置,例如SECRET_KEY 特别是名字中包含下面这些单词的设置:

  • 'API'
  • '键'
  • '通过'
  • '秘密'
  • '签名'
  • 'TOKEN'

注意,这里使用的是 部分 匹配. 'PASS'将匹配 PASSWORD, 另外 'TOKEN' 也将匹配 TOKENIZED 等等.

不过,总有一些调试的输出你不希望展现给公众的。 文件路径, 配置信息和其他,将会提供信息给攻击者来攻击你的服务器。

另外,很重要的是要记住当你运行时 DEBUG 模式打开的话, Django 记住所有执行的 SQL 查询语句。 这在进行 DEBUG 调试时非常有用, 但这会消耗运行服务器的大量内存资源.

最后,如果DEBUGFalse,你还需要正确设置ALLOWED_HOSTS 设置错误将导致对所有的请求返回“Bad Request (400)”。

django-admin startproject创建的settings.py文件设置DEBUG t7> = True为方便起见。

DEBUG_PROPAGATE_EXCEPTIONS

默认值:False

如果设置为True,Django对视图函数(handler500)的异常处理或调试视图(如果DEBUG)为True )并记录500个响应(django.request),并且异常向上传播。

这对于某些测试设置可能是有用的。 它不应该在实时站点上使用,除非您希望您的Web服务器(而不是Django)生成“内部服务器错误”响应。 在这种情况下,请确保您的服务器在响应中未显示堆栈跟踪或其他敏感信息。

DECIMAL_SEPARATOR

默认值:'.'(Dot)

格式化十进制数时使用的默认十进制分隔符。

请注意,如果USE_L10N设置为True,则区域设置格式具有更高的优先级,将会应用。

另请参阅NUMBER_GROUPINGTHOUSAND_SEPARATORUSE_THOUSAND_SEPARATOR

DEFAULT_CHARSET

默认值:'utf-8'

如果未手动指定MIME类型,则用于所有HttpResponse对象的默认字符集。 DEFAULT_CONTENT_TYPE配合使用以构造Content-Type头。

DEFAULT_CONTENT_TYPE

默认值:'text/html'

如果未手动指定MIME类型,则用于所有HttpResponse对象的默认内容类型。 DEFAULT_CHARSET配合使用以构造Content-Type头。

DEFAULT_EXCEPTION_REPORTER_FILTER

默认值:' django.views.debug.SafeExceptionReporterFilter '

如果尚未将任何分配给HttpRequest实例,则使用缺省异常报告器过滤器类。 请参阅Filtering error reports

DEFAULT_FILE_STORAGE

默认值:' django.core.files.storage.FileSystemStorage '

默认的Storage 类,用于没有指定文件系统的任何和文件相关的操作。 参见Managing files

DEFAULT_FROM_EMAIL

默认值:'webmaster@localhost'

用于来自站点管理员的各种自动通信的默认电子邮件地址。 这不包括发送到ADMINSMANAGERS的错误消息;为此,请参阅SERVER_EMAIL

DEFAULT_INDEX_TABLESPACE

默认值:''(空字符串)

用于不指定一个字段(如果后端支持它)的字段上的索引的默认表空间(请参阅Tablespaces)。

DEFAULT_TABLESPACE

默认值:''(空字符串)

用于不指定后者的模型(如果后端支持它)的默认表空间(请参阅Tablespaces)。

DISALLOWED_USER_AGENTS

默认值:[](空列表)

表示不允许访问系统范围内任何页面的User-Agent字符串的编译正则表达式对象列表。 用于坏的漫游器/抓取工具。 只有在安装CommonMiddleware时才会使用(请参阅Middleware)。

EMAIL_BACKEND

默认值:' django.core.mail.backends.smtp.EmailBackend '

用于发送邮件的后端。 可选的后端参见Sending email

EMAIL_FILE_PATH

默认:未指定

file 类型的邮件后端保存输出文件时使用的目录。

EMAIL_HOST

默认:'localhost'

发送邮件使用的主机。

另见EMAIL_PORT

EMAIL_HOST_PASSWORD

默认值:''(空字符串)

EMAIL_HOST 定义的SMTP 服务器使用的密码。 这个设置与EMAIL_HOST_USER 一起用于SMTP 服务器的认证。 如果两个中有一个为空,Django 则不会尝试认证。

另见EMAIL_HOST_USER

EMAIL_HOST_USER

默认值:''(空字符串)

EMAIL_HOST 定义的SMTP 服务器使用的用户名。 如果为空,Django 不会尝试认证。

另见EMAIL_HOST_PASSWORD

EMAIL_PORT

默认:25

EMAIL_HOST 定义的SMTP 服务器使用的端口。

EMAIL_SUBJECT_PREFIX

默认值:'[Django] '

使用django.core.mail.mail_adminsdjango.core.mail.mail_managers发送的电子邮件的主题行前缀。 你可能想要包含结尾空格。

EMAIL_USE_LOCALTIME

Django中的新功能1.11。

默认值:False

是否在本地时区(True)或UTC(False)中发送电子邮件的SMTP Date标题。

EMAIL_USE_TLS

默认值:False

是否使用TLS(安全)当与SMTP服务器的连接。这是用于显式TLS连接,通常在端口587上。如果你正在经历挂连接,看到隐EMAIL_USE_SSL TLS设置。 这用于显式TLS连接,通常在端口587上。 如果您遇到挂起的连接,请参阅隐式TLS设置EMAIL_USE_SSL

EMAIL_USE_SSL

默认值:False

在与SMTP服务器通信时是否使用隐式TLS(安全)连接。 在大多数电子邮件文档中,此类型的TLS连接称为SSL。 它通常在端口465上使用。 如果您遇到问题,请参阅显式TLS设置EMAIL_USE_TLS

请注意,EMAIL_USE_TLS / EMAIL_USE_SSL是互斥的,因此只能将其中一个设置设置为True

EMAIL_SSL_CERTFILE

默认值:None

如果EMAIL_USE_SSLEMAIL_USE_TLSTrue,则可以选择指定要用于SSL连接的PEM格式的证书链文件的路径。

EMAIL_SSL_KEYFILE

默认值:None

如果EMAIL_USE_SSLEMAIL_USE_TLSTrue,您可以选择指定要用于SSL连接的PEM格式的私钥文件的路径。

请注意,设置EMAIL_SSL_CERTFILEEMAIL_SSL_KEYFILE不会导致任何证书检查。 它们将传递到底层SSL连接。 有关如何处理证书链文件和私钥文件的详细信息,请参阅Python的ssl.wrap_socket()函数的文档。

EMAIL_TIMEOUT

默认值:None

指定阻止操作(如连接尝试)的超时(以秒为单位)。

FILE_CHARSET

默认值:'utf-8'

用于解码从磁盘读取的任何文件的字符编码。 这包括模板文件和初始SQL数据文件。

FILE_UPLOAD_HANDLERS

默认:

[
    'django.core.files.uploadhandler.MemoryFileUploadHandler',
    'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]

用于上传的处理程序列表。 更改此设置允许完全自定义 - 甚至替换Django的上传过程。

有关详细信息,请参阅Managing files

FILE_UPLOAD_MAX_MEMORY_SIZE

默认值:2621440(即2.5 MB)。

在上传到文件系统之前上传的最大大小(以字节为单位)。 有关详细信息,请参阅Managing files

另见DATA_UPLOAD_MAX_MEMORY_SIZE

FILE_UPLOAD_DIRECTORY_PERMISSIONS

默认值:None

应用于上传文件过程中创建的目录的数字模式。

此设置还会在使用collectstatic管理命令时确定收集的静态目录的默认权限。 有关覆盖它的详细信息,请参阅collectstatic

此值反映了FILE_UPLOAD_PERMISSIONS设置的功能和注意事项。

FILE_UPLOAD_PERMISSIONS

默认值:None

将新上传的文件设置为的数字模式(即0o644)。 有关这些模式意味着什么的更多信息,请参阅os.chmod()的文档。

如果未给出或None,您将获得操作系统相关的行为。 在大多数平台上,临时文件的模式为0o600,从内存保存的文件将使用系统的标准umask保存。

出于安全考虑,这些权限不会应用于存储在FILE_UPLOAD_TEMP_DIR中的临时文件。

此设置还会在使用collectstatic管理命令时确定收集的静态文件的默认权限。 有关覆盖它的详细信息,请参阅collectstatic

警告

始终以0为模式前缀。

如果您不熟悉文件模式,请注意领先的0非常重要:它表示一个八进制数,这是模式必须指定的方式。 如果您尝试使用644,您将得到完全不正确的行为。

FILE_UPLOAD_TEMP_DIR

默认值:None

在上传文件时临时存储数据的目录(通常大于FILE_UPLOAD_MAX_MEMORY_SIZE的文件)。 如果None,Django将使用操作系统的标准临时目录。 例如,在linux风格的操作系统上,这将默认为/tmp

有关详细信息,请参阅Managing files

FIRST_DAY_OF_WEEK

默认值:0(星期日)

代表一周的第一天的数字。 这在显示日历时特别有用。 此值仅在不使用格式国际化时或在找不到当前语言环境的格式时使用。

该值必须为0到6之间的整数,其中0表示星期日,1表示星期一,依此类推。

FIXTURE_DIRS

默认值:[](空列表)

搜索夹具文件的目录列表,以及搜索顺序中每个应用程序的fixtures目录。

注意,这些路径应该使用Unix风格的正斜杠,即使在Windows上。

请参阅Providing initial data with fixturesFixture loading

FORCE_SCRIPT_NAME

默认值:None

如果不是None,这将用作任何HTTP请求中SCRIPT_NAME环境变量的值。 此设置可用于覆盖服务器提供的SCRIPT_NAME值,该值可能是首选值的重写版本,或者根本不提供。 It is also used by django.setup() to set the URL resolver script prefix outside of the request/response cycle (e.g. in management commands and standalone scripts) to generate correct URLs when SCRIPT_NAME is not /.

在Django更改1.10:

该设置在django.setup()中的使用已添加。

FORM_RENDERER

Django中的新功能1.11。

默认值:' django.forms.renderers.DjangoTemplates '

呈现表单窗口小部件的类。 它必须实现the low-level render API

FORMAT_MODULE_PATH

默认值:None

Python包的完整Python路径,其中包含项目语言环境的格式定义。 如果不是None,Django将检查一个formats.py文件,名为当前语言环境的目录,并使用此文件中定义的格式。

例如,如果FORMAT_MODULE_PATH设置为mysite.formats,并且当前语言为en(英语),Django将需要一个目录树,

mysite/
    formats/
        __init__.py
        en/
            __init__.py
            formats.py

您还可以将此设置设置为Python路径列表,例如:

FORMAT_MODULE_PATH = [
    'mysite.formats',
    'some_app.formats',
]

当Django搜索某种格式时,它将遍历所有给定的Python路径,直到找到一个实际定义给定格式的模块。 这意味着在列表中更远的包中定义的格式将优先于在更远的包中的相同格式。

可用的格式有DATE_FORMATTIME_FORMATDATETIME_FORMATYEAR_MONTH_FORMATMONTH_DAY_FORMATSHORT_DATE_FORMATSHORT_DATETIME_FORMATFIRST_DAY_OF_WEEKDECIMAL_SEPARATORTHOUSAND_SEPARATORNUMBER_GROUPING

IGNORABLE_404_URLS

默认值:[](空列表)

通过电子邮件报告HTTP 404错误时应忽略的编译正则表达式对象列表(请参阅Error reporting)。 正则表达式与request's full paths(包括查询字符串,如果有)匹配。 如果您的网站没有提供通常要求的档案(例如favicon.icorobots.txt),或是遭到脚本小孩的攻击,请使用此方法。

只有在启用BrokenLinkEmailsMiddleware(请参阅Middleware)时才会使用此选项。

INSTALLED_APPS

默认值:[](空列表)

指定在此Django安装中启用的所有应用程序的字符串列表。 每个字符串应该是一个 Python 的点分路径:

  • 应用程序配置类(首选)或
  • 一个包含应用程序的包。

了解更多关于应用程序配置

使用应用程序注册表进行自我检查

您的代码不应直接访问INSTALLED_APPS 请改用django.apps.apps

应用程序名称和标签在INSTALLED_APPS中必须是唯一的

应用程序names - 应用程序包的点分Python路径必须是唯一的。 没有办法包含相同的应用程序两次,没有重复其代码在另一个名称下。

应用程序labels - 默认情况下,名称的最后一部分也必须是唯一的。 例如,您不能同时包含django.contrib.authmyproject.auth 但是,您可以使用定义不同label的自定义配置重新标记应用程序。

无论INSTALLED_APPS引用应用程序配置类还是应用程序包,这些规则都适用。

当多个应用程序提供相同资源(模板,静态文件,管理命令,翻译)的不同版本时,INSTALLED_APPS中首先列出的应用程序优先。

INTERNAL_IPS

默认值:[](空列表)

IP地址列表,如下所示:

  • 允许debug()上下文处理器向模板上下文添加一些变量。
  • 即使没有以工作人员的身份登录,也可以使用admindocs bookmarklets
  • AdminEmailHandler电子邮件中标记为“内部”(而不是“EXTERNAL”)。

LANGUAGE_CODE

默认值:'en-us'

表示此安装的语言代码的字符串。 这应该是标准的language ID format 例如,美国英语是"en-us" 另请参阅语言标识符列表Internationalization and localization

USE_I18N必须处于活动状态才能使此设置生效。

它有两个目的:

  • 如果区域中间件未使用,则会决定向所有用户提供哪个翻译。
  • 如果语言环境中间件处于活动状态,则会提供后备语言,以防用户首选语言无法确定或不被网站支持。 当用户的首选语言不存在给定文字的翻译时,它还提供后备翻译。

有关详细信息,请参见How Django discovers language preference

LANGUAGES

默认值:所有可用语言的列表。 这个列表不断增长,包括一个副本在这里将不可避免地变得迅速过时。 您可以在django/conf/global_settings.py(或查看在线源)中查看当前翻译语言列表。

该列表是格式(language code语言 名称)的两元组列表 - 例如,('ja', 'Japanese') 这指定了哪些语言可用于语言选择。 请参阅Internationalization and localization

一般来说,默认值应该足够了。 如果您要将语言选择限制为Django提供的语言的一部分,请仅设置此设置。

如果您定义自定义LANGUAGES设置,则可以使用ugettext_lazy()函数将语言名称标记为翻译字符串。

下面是一个示例设置文件:

from django.utils.translation import ugettext_lazy as _

LANGUAGES = [
    ('de', _('German')),
    ('en', _('English')),
]

LOCALE_PATHS

默认值:[](空列表)

Django查找翻译文件的目录列表。 请参阅How Django discovers translations

例如:

LOCALE_PATHS = [
    '/home/www/project/common_files/locale',
    '/var/local/translations/locale',
]

Django将在这些路径中查找包含实际翻译文件的<locale_code>/LC_MESSAGES目录。

LOGGING

默认值:日志配置字典。

包含配置信息的数据结构。 此数据结构的内容将作为参数传递到LOGGING_CONFIG中描述的配置方法。

其中,默认日志配置会在DEBUGFalse时将HTTP 500服务器错误传递到电子邮件日志处理程序。 另请参见Configuring logging

您可以在django/utils/log.py(或查看在线源)中查看默认日志配置。

LOGGING_CONFIG

默认值:'logging.config.dictConfig'

将用于在Django项目中配置日志记录的可调用项的路径。 默认情况下,Python的dictConfig配置方法实例的点。

如果将LOGGING_CONFIG设置为None,将跳过日志配置过程。

MANAGERS

默认值:[](空列表)

ADMINS格式相同的列表,指定当BrokenLinkEmailsMiddleware启用时,谁应该断开链接通知。

MEDIA_ROOT

默认值:''(空字符串)

指向存放用户上传的文件所在目录的文件系统绝对路径。

例如: "/var/www/example.com/media/"

另见MEDIA_URL

警告

MEDIA_ROOTSTATIC_ROOT必须设置为不同的值。 在引入STATIC_ROOT之前,通常依赖或回退到MEDIA_ROOT来让它也服务静态文件;然而,由于这可能会带来严重的安全隐患,因此有一个验证检查来防止它。

MEDIA_URL

默认值:''(空字符串)

MEDIA_URL指向MEDIA_ROOT所指定的media文件,通过这个地址来管理保存的文件 该URL设置为非空值时,必须以斜杠“/”结束。 在开发和生产环境中,都将需要配置这些需要服务的文件

若你打算在模版中使用 {{ MEDIA_URL }},那么应在TEMPLATES'context_processors'设置中添加'django.template.context_processors.media'

例如: "http://media.example.com/"

警告

如果接受非授信用户上传的内容,将会给系统带来安全风险。 关于迁移细节,请参见User-uploaded content中安全指南一节。

警告

MEDIA_URLSTATIC_URL 必须设置为不同的值。 更多细节,请参见 MEDIA_ROOT

MIDDLEWARE

Django中的新功能1.10。

默认值:None

要使用的中间件列表。 请参见Middleware

MIDDLEWARE_CLASSES

自1.10版以来已弃用 使用settings.MIDDLEWARE_CLASSES的旧式中间件已弃用。 Adapt old, custom middleware,并使用MIDDLEWARE设置。

默认:

[
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
]

要使用的中间件类的列表。 这是Django 1.9及更早版本中使用的默认设置。 Django 1.10引入了一种新风格的中间件。 如果您使用此设置使用较旧的项目,则应将update any middleware you’ve written yourself更新为新样式,然后使用MIDDLEWARE设置。

MIGRATION_MODULES

Default: {} (默认为空的字典)

指定可在每个应用程序的基础上找到迁移模块的软件包的字典。 此设置的默认值为空字典,但迁移模块的默认软件包名称为migrations

例如:

{'blog': 'blog.db_migrations'}

在这种情况下,与blog应用程序相关的迁移将包含在blog.db_migrations包中。

如果您提供app_label参数,则makemigrations将自动创建软件包(如果尚不存在)。

当您将None作为应用程序的值时,Django会将应用视为应用程序,而不会迁移,而不管现有的migrations子模块。 例如,这可以在测试设置文件中用于在测试时跳过迁移(仍将为应用程序模型创建表)。 如果这在常规项目设置中使用,请记住使用migrate --run-syncdb选项,如果要创建表应用程序。

MONTH_DAY_FORMAT

默认值:'F j'

用于Django管理更改列表页面上的日期字段(可能还包括系统的其他部分)的默认格式(仅显示月份和日期时)。

例如,当通过日期明细过滤Django管理更改列表页面时,给定日期的标题显示日期和月份。 不同的区域设置具有不同的格式。 例如,美国英语会说“1月1日”,而西班牙语可能会说“1 Enero”。

请注意,如果USE_L10N设置为True,则相应的区域设置格式具有更高的优先级,并将应用。

请参阅allowed date format strings 另请参阅DATE_FORMATDATETIME_FORMATTIME_FORMATYEAR_MONTH_FORMAT

NUMBER_GROUPING

默认:0

在数字的整数部分上分组在一起的数字位数。

常用的是显示一千个分隔符。 如果此设置为0,则不会对数字应用分组。 如果此设置大于0,则THOUSAND_SEPARATOR将用作这些组之间的分隔符。

某些地区使用不均匀的数字分组,例如en_IN中的10,00,00,000 对于这种情况,您可以提供要应用的数字组大小数的序列。 第一个数字定义了十进制分隔符之前的组的大小,下面的每个数字定义了前面的组的大小。 如果序列以-1终止,则不进行进一步的分组。 如果序列以0终止,则最后一个组大小用于该数字的其余部分。

en_IN的示例元组:

NUMBER_GROUPING = (3, 2, 0)

请注意,如果USE_L10N设置为True,则区域设置格式具有更高的优先级,将会应用。

另见DECIMAL_SEPARATORTHOUSAND_SEPARATORUSE_THOUSAND_SEPARATOR

在Django更改1.11:

增加了对不均匀数字分组的支持。

PREPEND_WWW

默认值:False

是否将“www。”子网域添加到没有网址的网址。 仅在安装CommonMiddleware时使用(请参阅Middleware)。 另请参阅APPEND_SLASH

ROOT_URLCONF

默认:未指定

一个字符串,表示根URLconf 的完整Python 导入路径。 例如:"mydjangoapps.urls" 每个请求可以覆盖它,方法是设置进来的urlconf 对象的HttpRequest属性。 细节参见How Django processes a request

SECRET_KEY

默认值:''(空字符串)

特定Django安装的密钥。 这用于提供cryptographic signing,并应设置为唯一的不可预测的值。

django-admin startproject自动向每个新项目添加随机生成的SECRET_KEY

密钥的使用不应该假定它是文本或字节。 每次使用都应该通过force_text()force_bytes()将其转换为所需的类型。

如果未设置SECRET_KEY,Django将拒绝启动。

警告

保持此值的秘密。

使用已知的SECRET_KEY运行Django会导致许多Django的安全保护失效,并可能导致特权升级和远程代码执行漏洞。

密钥用于:

如果您更换密钥,上述所有内容都将失效。 密钥不用于用户的密码,密钥轮换不会影响用户密码。

django-admin startproject创建的默认settings.py文件创建一个唯一的SECRET_KEY

SECURE_BROWSER_XSS_FILTER

默认值:False

如果TrueSecurityMiddleware设置X-XSS-Protection: 1; mode=block标题中所有没有它的响应。

SECURE_CONTENT_TYPE_NOSNIFF

默认值:False

如果True,则SecurityMiddleware在尚未拥有它的所有响应上设置X-Content-Type-Options: nosniff

SECURE_HSTS_INCLUDE_SUBDOMAINS

默认值:False

如果True,则SecurityMiddlewareincludeSubDomains指令添加到HTTP Strict Transport Security头。 除非SECURE_HSTS_SECONDS设置为非零值,否则它不起作用。

警告

不正确地设置错误(对于SECURE_HSTS_SECONDS的值)会破坏您的站点。 首先阅读HTTP Strict Transport Security文档。

SECURE_HSTS_PRELOAD

Django中的新功能1.11。

默认值:False

如果TrueSecurityMiddlewarepreload指令添加到HTTP Strict Transport Security头。 除非SECURE_HSTS_SECONDS设置为非零值,否则它不起作用。

SECURE_HSTS_SECONDS

默认:0

如果设置为非零整数值,则SecurityMiddleware会在尚未拥有它的所有响应上设置HTTP Strict Transport Security标题。

警告

设置不正确可能会不可逆转(一段时间)中断您的网站。 首先阅读HTTP Strict Transport Security文档。

SECURE_PROXY_SSL_HEADER

默认值:None

表示表示请求的HTTP头/值组合的元组是安全的。 这控制请求对象的is_secure()方法的行为。

这需要一些解释。 默认情况下,is_secure()能够通过查看请求的网址是否使用“https://”来确定请求是否安全。 这对于Django的CSRF保护很重要,可以由您自己的代码或第三方应用程序使用。

如果你的Django应用程序在代理后面,代理可能“吞下”一个请求是HTTPS的事实,使用代理和Django之间的非HTTPS连接。 在这种情况下,is_secure()将始终返回False - 即使对于通过HTTPS由最终用户进行的请求。

在这种情况下,您需要配置代理以设置自定义HTTP标头,以通知Django请求是否通过HTTPS传入,并且您希望设置SECURE_PROXY_SSL_HEADER,以便Django知道哪个报头寻找。

您需要设置一个包含两个元素的元组:要查找的标题的名称和所需的值。 像这样:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

在这里,我们告诉Django我们信任来自我们代理的X-Forwarded-Proto头部,并且任何时候它的值是'https'保证是安全的(即,它最初通过HTTPS进来)。 显然,如果您控制您的代理或有其他保证它适当地设置/剥离此标头,您应该设置此设置。

请注意,标题需要使用request.META使用的格式 - 所有大写字母,并且可能以HTTP_开头。 (记住,Django会在request.META中使头部可用之前自动将'HTTP_'添加到x-header名称的开头。

警告

如果您在不知道自己在做什么的情况下进行设置,您可能会在您的网站上打开安全漏洞。 如果你没有设置它,当你应该。 认真。

在设置之前,请确保以下所有条件成立(假设上述示例中的值):

  • 你的Django应用程序在代理后面。
  • 您的代理会从所有传入的请求中取消X-Forwarded-Proto标头。 换句话说,如果最终用户在其请求中包括该头,代理将丢弃它。
  • 您的代理会设置X-Forwarded-Proto标头,并将其发送到Django,但仅适用于最初通过HTTPS进入的请求。

如果其中任何一个不正确,您应该将此设置设置为None,并找到另一种确定HTTPS的方法,也许通过自定义中间件。

SECURE_REDIRECT_EXEMPT

默认值:[](空列表)

如果网址路径与此列表中的正则表达式匹配,则请求将不会重定向到HTTPS。 如果SECURE_SSL_REDIRECTFalse,则此设置无效。

SECURE_SSL_HOST

默认值:None

如果字符串(例如secure.example.com),所有SSL重定向将被定向到此主机,而不是原始请求的主机(例如www.example.com) 。 如果SECURE_SSL_REDIRECTFalse,则此设置无效。

SECURE_SSL_REDIRECT

默认值:False

If True, the SecurityMiddleware redirects all non-HTTPS requests to HTTPS (except for those URLs matching a regular expression listed in SECURE_REDIRECT_EXEMPT).

如果将此设置为True会导致无限重定向,则可能意味着您的网站在代理后运行,无法分辨哪些请求是安全的,哪些请求不安全。 您的代理可能会设置一个标题来指示安全请求;您可以通过查找该标题以及相应地配置SECURE_PROXY_SSL_HEADER设置来纠正问题。

SERIALIZATION_MODULES

默认:未指定

包含序列化程序定义(作为字符串提供)的模块字典,由该序列化类型的字符串标识符键入。 例如,要定义YAML序列化程序,请使用:

SERIALIZATION_MODULES = {'yaml': 'path.to.yaml_serializer'}

SERVER_EMAIL

默认值:'root@localhost'

错误消息来源的电子邮件地址,例如发送到ADMINSMANAGERS的电子邮件地址。

为什么我的电子邮件是从其他地址发送的?

此地址仅用于错误消息。 不是 send_mail()发送的常规电子邮件的地址来自;为此,请参阅DEFAULT_FROM_EMAIL

SHORT_DATE_FORMAT

默认值:'m/d/Y'(例如12/31/2003

可用于在模板上显示日期字段的可用格式。 请注意,如果USE_L10N设置为True,则相应的区域设置格式具有更高的优先级,并将应用。 请参阅allowed date format strings

另请参阅DATE_FORMATSHORT_DATETIME_FORMAT

SHORT_DATETIME_FORMAT

默认值:'m / d / Y P' 2003年12月31日 4 下午)

可用于在模板上显示datetime字段的可用格式。 请注意,如果USE_L10N设置为True,则相应的区域设置格式具有更高的优先级,并将应用。 请参阅allowed date format strings

另请参阅DATE_FORMATSHORT_DATE_FORMAT

SIGNING_BACKEND

默认值:'django.core.signing.TimestampSigner'

后端用于签名Cookie和其他数据。

另请参阅Cryptographic signing文档。

SILENCED_SYSTEM_CHECKS

默认值:[](空列表)

您希望永久确认和忽略的系统检查框架生成的消息的标识符列表(即["models.W001"])。 静音检查不会输出到控制台。

另请参见System check framework文档。

TEMPLATES

默认值:[](空列表)

Django的模板使用一个列表来进行配置。 列表中每一项都是一个字典类型数据,可以配置模板不同的功能。

这是一个简单的设置,它告诉Django模板引擎从每个已安装应用程序的templates子目录中加载模板:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'APP_DIRS': True,
    },
]

以下选项适用于所有后端。

BACKEND

默认:未指定

要使用的模板后端。 内置模板后端是:

  • 'django.template.backends.django.DjangoTemplates'
  • 'django.template.backends.jinja2.Jinja2'

通过将BACKEND设置为完全限定路径(即'mypackage.whatever.Backend'),您可以使用未随Django提供的模板后端。

NAME

默认值:见下面

此特定模板引擎的别名。 它是一个标识符,允许选择引擎进行渲染。 别名在所有已配置的模板引擎中必须是唯一的。

它默认为定义引擎类的模块的名称,即BACKEND的下一段,当没有提供时。 例如,如果后端是'mypackage.whatever.Backend',则其默认名称为'whatever'

DIRS

默认值:[](空列表)

包含搜索顺序的序列,搜索引擎会按照这个顺序查找template资源文件

APP_DIRS

默认值:False

Templates引擎是否应该在已安装的app中查找Template源文件

django-admin startproject设置的默认settings.py文件 'APP_DIRS': 真正.

OPTIONS

默认值:{}(Empty dict)

传递给模板后端的额外参数。 可用参数因模板后端而异。 有关内置后端的选项,请参见DjangoTemplatesJinja2

TEST_RUNNER

默认值:'django.test.runner.DiscoverRunner'

用于启动测试套件的类的名称。 请参见Using different testing frameworks

TEST_NON_SERIALIZED_APPS

默认值:[](空列表)

为了恢复TransactionTestCase和数据库后端没有事务的测试之间的数据库状态,Django将在开始测试运行时将serialize the contents of all apps

这会减慢测试员的启动时间;如果您有知道不需要此功能的应用程序,则可以在此处添加其全名(例如'django.contrib.contenttypes'),以将其从此序列化过程中排除。

THOUSAND_SEPARATOR

默认值:','(逗号)

格式化数字时使用的默认千分位数。 此设置仅在USE_THOUSAND_SEPARATORTrueNUMBER_GROUPING大于0时使用。

请注意,如果USE_L10N设置为True,则区域设置格式具有更高的优先级,将会应用。

另请参阅NUMBER_GROUPINGDECIMAL_SEPARATORUSE_THOUSAND_SEPARATOR

TIME_FORMAT

默认值:'P'(例如 4 下午)

用于在系统任何部分中显示时间字段的默认格式。 请注意,如果USE_L10N设置为True,则区域设置格式具有更高的优先级,将会应用。 请参阅allowed date format strings

另请参阅DATE_FORMATDATETIME_FORMAT

TIME_INPUT_FORMATS

默认:

[
    '%H:%M:%S',     # '14:30:59'
    '%H:%M:%S.%f',  # '14:30:59.000200'
    '%H:%M',        # '14:30'
]

在时间字段上输入数据时将接受的格式列表。 格式将按顺序尝试,使用第一个有效的格式。 请注意,这些格式字符串使用Python的datetime module syntax,而不是来自date模板过滤器的格式字符串。

USE_L10NTrue时,区域设置格式具有更高的优先级,将会应用。

另请参阅DATE_INPUT_FORMATSDATETIME_INPUT_FORMATS

TIME_ZONE

默认:'America/Chicago'

一个字符串,表示安装的Django所在的时区。 参见时区列表

因为Django第一次发布时,TIME_ZONE设置为 'America/Chicago',为了向前兼容,这个全局设置仍然保留为'America/Chicago'(在你的项目的settings.py中没有定义时使用)。 新的项目模板默认为'UTC'

注意,它不一定要和服务器的时区一致。 例如,一个服务器可上可能有多个Django 站点,每个站点都有一个单独的时区设置。

USE_TZFalse 时,它将成为Django 存储所有日期和时间时使用的时区。 USE_TZTrue 时,它是Django 显示模板中以及解释表单中的日期和时间默认使用的时区。

在Unix环境中(其中time.tzset()被实现),Django将os.environ['TZ']变量设置为您在TIME_ZONE设置。 所以,你的所有视图和模型都将自动在这个时区中运作。 但是,如果按照manually configuring settings中所述使用手动配置选项,Django将不会设置TZ环境变量。 如果Django 没有设置TZ 环境变量,那么你需要自己确保你的进程在正确的环境中运行。

在Windows 环境中,Django 不能可靠地交替其它时区。 如果你在Windows 上运行Django,TIME_ZONE 必须设置为与系统时区一致。

USE_ETAGS

默认值:False

一个布尔值,指定是否输出ETag头。 这种方式会节省带宽但是会降低性能, 这被CommonMiddlewarecache framework中使用。

自1.11版以来已弃用 此设置不利于使用ConditionalGetMiddleware,它设置一个ETag,而不管此设置如何。

USE_I18N

默认值:True

这是一个布尔值,它指定Django的翻译系统是否被启用。 它提供了一种简单的方式去关闭翻译系统。 如果设置为 False, Django 会做一些优化,不去加载翻译机制

另请参见LANGUAGE_CODEUSE_L10NUSE_TZ

django-admin startproject创建的默认settings.py文件包括USE_I18N t7> = True为方便起见。

USE_L10N

默认值:False

是一个布尔值,用于决定是否默认进行日期格式本地化。 如果此设置为True,例如Django将使用当前语言环境的格式显示数字和日期。

另请参见LANGUAGE_CODEUSE_I18NUSE_TZ

django-admin startproject创建的默认settings.py文件包括USE_L10N t7> = True为方便起见。

USE_THOUSAND_SEPARATOR

默认值:False

一个布尔值,指定是否使用千位分隔符显示数字。 USE_L10N设置为True,如果这也设置为True,Django将使用THOUSAND_SEPARATORNUMBER_GROUPING格式化数字,除非语言环境已经有一个现有的千位分隔符。 如果在区域设置格式中有一个成千上万的分隔符,它将具有更高的优先级,并将被替代。

另见DECIMAL_SEPARATORNUMBER_GROUPINGTHOUSAND_SEPARATOR

USE_TZ

默认值:False

这是一个布尔值,用来指定是否使用指定的时区(TIME_ZONE)的时间. 若为 True, 则Django 会使用内建的时区的时间 否则, Django 将会使用本地的时间

另请参阅TIME_ZONEUSE_I18NUSE_L10N

django-admin startproject创建的默认settings.py文件包括USE_TZ = True为方便起见。

USE_X_FORWARDED_HOST

默认值:False

一个布尔值,指定是否使用X-Forwarded-Host头,优先于Host头。 只有在使用设置此标头的代理时,才应启用此选项。

此设置优先于USE_X_FORWARDED_PORT RFC 7239#page-7X-Forwarded-Host头可以包含端口号,在这种情况下,您不应该使用USE_X_FORWARDED_PORT

USE_X_FORWARDED_PORT

默认值:False

一个布尔值,指定是否使用X-Forwarded-Port头,优先于SERVER_PORT META变量。 只有在使用设置此标头的代理时,才应启用此选项。

USE_X_FORWARDED_HOST优先于此设置。

WSGI_APPLICATION

默认值:None

Django的内置服务器(例如runserver)将使用的WSGI应用程序对象的完整Python路径。 The django-admin startproject management command will create a simple wsgi.py file with an application callable in it, and point this setting to that application.

如果未设置,将使用django.core.wsgi.get_wsgi_application()的返回值。 在这种情况下,runserver的行为将与以前的Django版本相同。

YEAR_MONTH_FORMAT

默认值:'F Y'

用于Django管理更改列表页面上的日期字段(可能还包括系统的其他部分)的默认格式,以便仅显示年份和月份。

例如,当通过日期明细过滤Django管理更改列表页面时,给定月份的标题显示月份和年份。 不同的区域设置具有不同的格式。 例如,美国英语会说“2006年1月”,而另一个地区可能说“2006 / January”。

请注意,如果USE_L10N设置为True,则相应的区域设置格式具有更高的优先级,并将应用。

请参阅allowed date format strings 另请参阅DATE_FORMATDATETIME_FORMATTIME_FORMATMONTH_DAY_FORMAT

X_FRAME_OPTIONS

默认值:'SAMEORIGIN'

XFrameOptionsMiddleware使用的X-Frame-Options标头的默认值。 请参阅clickjacking protection文档。

Auth

用于django.contrib.auth 的设置。

AUTHENTICATION_BACKENDS

默认值:['django.contrib.auth.backends.ModelBackend']

在尝试验证用户时使用的认证后端类(作为字符串)的列表。 详细信息参见authentication backends documentation

AUTH_USER_MODEL

默认值:'auth.User'

用来表示User的模型。 参见替换User模型

警告

在项目的生命周期内(即生成并迁移依赖于它的模型之后),你不能更改AUTH_USER_MODEL设置,否则将花费很大的努力。 它用于在项目开始时设置,它所在的应用在第一次迁移时其引用的模型必须可用。 有关详细信息,请参阅替换User模型

LOGIN_REDIRECT_URL

默认:'/accounts/profile/'

登录之后,contrib.auth.login 视图找不到next 参数时,请求被重定向到的URL。

例如,它被login_required() 装饰器使用。

此设置还接受可以用于减少配置重复的named URL patterns,因为您不必在两个位置(settings和URLconf)中定义URL。

LOGIN_URL

默认:'/accounts/login/'

登录的URL,特别是使用login_required() 装饰器的时候。

此设置还接受可以用于减少配置重复的named URL patterns,因为您不必在两个位置(settings和URLconf)中定义URL。

LOGOUT_REDIRECT_URL

Django中的新功能1.10。

默认值:None

使用LogoutView(如果视图没有获得next_page参数)退出用户后,请求被重定向的URL。

如果None,则不执行重定向,并且将退出注销视图。

此设置还接受可以用于减少配置重复的named URL patterns,因为您不必在两个位置(settings和URLconf)中定义URL。

PASSWORD_RESET_TIMEOUT_DAYS

默认:3

重置密码的链接有效的天数。 用于django.contrib.auth 的重置密码功能。

PASSWORD_HASHERS

参见How Django stores passwords

默认:

[
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.Argon2PasswordHasher',
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
]
在Django更改1.10:

以下hashers从默认值中删除:

'django.contrib.auth.hashers.SHA1PasswordHasher'
'django.contrib.auth.hashers.MD5PasswordHasher'
'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher'
'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher'
'django.contrib.auth.hashers.CryptPasswordHasher'

考虑使用wrapped password hasher来加强数据库中的哈希值。 如果这不可行,请将此设置添加到项目中,并添加所需的任何哈希值。

此外,添加了Argon2PasswordHasher

AUTH_PASSWORD_VALIDATORS

默认值:[](空列表)

用于检查用户密码强度的验证器列表。 有关详细信息,请参见Password validation 默认情况下,不执行任何验证,并接受所有密码。

消息 T0> ¶ T1>

django.contrib.messages的设置。

MESSAGE_LEVEL

默认值:messages.INFO

设置消息框架将记录的最小消息级别。 有关详细信息,请参阅message levels

重要

如果您在设置文件中替换MESSAGE_LEVEL并依赖于任何内置常量,则必须直接导入常数模块,以避免循环导入的可能性,例如:

from django.contrib.messages import constants as message_constants
MESSAGE_LEVEL = message_constants.DEBUG

如果需要,可以根据上述constants table中的值直接指定常数的数值。

MESSAGE_STORAGE

默认值:'django.contrib.messages.storage.fallback.FallbackStorage'

控制Django在哪里存储消息数据。 有效值为:

  • 'django.contrib.messages.storage.fallback.FallbackStorage'
  • 'django.contrib.messages.storage.session.SessionStorage'
  • 'django.contrib.messages.storage.cookie.CookieStorage'

有关详细信息,请参阅message storage backends

使用Cookie的后端 - CookieStorageFallbackStorage - 使用SESSION_COOKIE_DOMAINSESSION_COOKIE_SECURESESSION_COOKIE_HTTPONLY

MESSAGE_TAGS

默认:

{
    messages.DEBUG: 'debug',
    messages.INFO: 'info',
    messages.SUCCESS: 'success',
    messages.WARNING: 'warning',
    messages.ERROR: 'error',
}

这设置消息级别到消息标记的映射,通常呈现为HTML中的CSS类。 如果指定一个值,它将扩展默认值。 这意味着您只需要指定需要覆盖的那些值。 有关详细信息,请参阅上面的Displaying messages

重要

如果您在设置文件中替换MESSAGE_TAGS并依赖任何内置常数,则必须直接导入constants模块,以避免循环导入的可能性,例如:

from django.contrib.messages import constants as message_constants
MESSAGE_TAGS = {message_constants.INFO: ''}

如果需要,可以根据上述constants table中的值直接指定常数的数值。

会话 T0> ¶ T1>

django.contrib.sessions的设置。

SESSION_CACHE_ALIAS

默认值:'default'

使用 cache-based session storage, 使用何种缓存

SESSION_ENGINE

默认值:'django.contrib.sessions.backends.db'

控制Django 在哪里存储会话数据。 包含的引擎有:

  • 'django.contrib.sessions.backends.db'
  • 'django.contrib.sessions.backends.file'
  • 'django.contrib.sessions.backends.cache'
  • 'django.contrib.sessions.backends.cached_db'
  • 'django.contrib.sessions.backends.signed_cookies'

更多细节参见Configuring the session engine

SESSION_EXPIRE_AT_BROWSER_CLOSE

默认值:False

是否在用户关闭浏览器时过期会话。 请参阅Browser-length sessions vs. persistent sessions

SESSION_FILE_PATH

默认值:None

如果使用基于文件的会话存储,这将设置Django存储会话数据的目录。 当使用默认值(None)时,Django将使用系统的标准临时目录。

SESSION_SAVE_EVERY_REQUEST

默认值:False

是否保存每个请求的会话数据。 如果这是False(默认值),那么会话数据只有在被修改时才被保存 - 也就是说,如果它的任何字典值被赋值或删除。 即使此设置处于活动状态,也不会创建空会话。

SESSION_SERIALIZER

默认值:'django.contrib.sessions.serializers.JSONSerializer'

用于序列化会话数据的序列化类的完整导入路径。 包括的序列化器有:

  • 'django.contrib.sessions.serializers.PickleSerializer'
  • 'django.contrib.sessions.serializers.JSONSerializer'

有关详细信息,请参阅Session serialization,包括使用PickleSerializer时可能的远程代码执行的警告。

Sites

django.contrib.sites 的设置。

SITE_ID

默认:未指定

当前站点在django_site 数据库表中的ID,为一个整数。 这是用来让应用程序数据可以连接到特定的网站和一个单一的数据库可以管理多个站点的内容

静态文件

django.contrib.staticfiles的相关设置。

STATIC_ROOT

默认值:None

collectstatic为部署而收集的静态文件的目录的绝对路径。

示例:"/var/www/example.com/static/"

如果启用staticfiles contrib应用(项目的模板默认启用),则collectstatic管理命令将静态文件收集到此目录中。 有关使用情况的更多详细信息,请参阅管理静态文件的how-to。

警告

这应该是一个最初的空目标目录,用于将静态文件从永久位置收集到一个目录中,以方便部署;它不是永久存储静态文件的地方。 你应该在staticfilesfinders找到的目录中,它默认是'static/' app子目录以及您在STATICFILES_DIRS中包含的任何目录)。

STATIC_URL

默认值:None

引用位于STATIC_ROOT中的静态文件时使用的网址。

示例:"/static/""http://static.example.com/"

如果不是None,则将用作asset definitionsMedia类)和staticfiles应用

该URL设置为非空值时,必须以斜杠“/”结束。

可能需要在开发过程中服务这些文件,但是在生产环境中肯定需要。

STATICFILES_DIRS

默认值:[](空列表)

此设置定义了在启用FileSystemFinder finder时staticfiles应用程序将遍历的附加位置。如果您使用collectstaticfindstatic管理命令或使用静态文件提供视图。

应将此设置为包含其他文件目录的完整路径的字符串列表,例如:

STATICFILES_DIRS = [
    "/home/special.polls.com/polls/static",
    "/home/polls.com/polls/static",
    "/opt/webfiles/common",
]

请注意,即使在Windows上(例如"C:/Users/user/mysite/extra_static_content"),这些路径应使用Unix样式的正斜杠。

前缀(可选)

如果要使用其他命名空间引用其中一个位置中的文件,可以(可选)提供前缀(前缀, 路径) 元组,例如:

STATICFILES_DIRS = [
    # ...
    ("downloads", "/opt/webfiles/stats"),
]

舉例來說,假設您將STATIC_URL設值為 '/static/',那麼collectstatic指令將會收集靜態檔案至'downloads'的子目錄STATIC_ROOT

这将允许您使用'/opt/webfiles/stats/polls_20101022.tar.gz'来引用本地文件'/static/downloads/polls_20101022.tar.gz'

<a href="{% static "downloads/polls_20101022.tar.gz" %}">

STATICFILES_STORAGE

默认值:'django.contrib.staticfiles.storage.StaticFilesStorage'

使用collectstatic管理命令收集静态文件时使用的文件存储引擎。

可在django.contrib.staticfiles.storage.staticfiles_storage中找到此设置中定义的存储后端的即时使用实例。

有关示例,请参阅Serving static files from a cloud service or CDN

STATICFILES_FINDERS

默认:

[
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

finder后端列表,不同finder用来在不同的位置搜索静态文件。

默认设置是在 STATICFILES_DIRS (使用 django.contrib.staticfiles.finders.FileSystemFinder) 和每个应用的子目录 django.contrib.staticfiles.finders.AppDirectoriesFinder (使用 static)中搜索. 如果存在多个具有相同名称的文件,则将使用找到的第一个文件。

查找器 django.contrib.staticfiles.finders.DefaultStorageFinder默认情况下是被禁用的. 如果添加到您的STATICFILES_FINDERS设置,它将在默认文件存储中查找由DEFAULT_FILE_STORAGE设置定义的静态文件。

使用AppDirectoriesFinder查找工具时,请确保您的应用可以通过静态文件找到。 只需将应用程式新增至您网站的INSTALLED_APPS设定即可。

静态文件查找器目前被认为是一个私有接口,因此这个接口是未被文档记录的。

核心设置主题索引