警告
当您重写设置时,请特别注意,如果默认值为非空列表或字典,例如MIDDLEWARE_CLASSES
和STATICFILES_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
异常.
当DEBUG
为True
和ALLOWED_HOSTS
为空时,主机根据['localhost', '127.0.0.1', '[:: 1]']
。
ALLOWED_HOSTS
在运行测试时也会检查checked when running tests
此验证仅适用于get_host()
;如果您的代码直接从request.META
访问Host
,您将绕过此安全保护。
在旧版本中,运行测试时未检查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',
}
}
一个字典,包含 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'
通过将BACKEND
设置为缓存后端类的完全限定路径(即mypackage.backends.whatever.WhateverCache
),您可以使用未随Django提供的缓存后端。 )。
KEY_FUNCTION
¶包含函数(或任何可调用)的虚线路径的字符串,定义如何将前缀,版本和键组成最终缓存键。 默认实现等效于以下函数:
def make_key(key, key_prefix, version):
return ':'.join([key_prefix, str(version), key])
你可以使用任何你想要的键功能,只要它有相同的参数签名。
有关详细信息,请参阅cache documentation。
LOCATION
¶默认值:''
(空字符串)
要使用的缓存的位置。 这可能是文件系统缓存的目录,内存缓存服务器的主机和端口,或者只是本地内存缓存的标识名称。 例如:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
CACHE_MIDDLEWARE_KEY_PREFIX
¶默认值:''
(空字符串)
将由cache
middleware生成的高速缓存键前缀的字符串。 该前缀与KEY_PREFIX
设置组合;它不会取代它。
CSRF_COOKIE_AGE
¶默认值:31449600
(约1年,以秒为单位)
CSRF cookies有效期 ,单位为秒
设置长期过期时间的原因是为了避免在用户关闭浏览器或将页面加入书签,然后从浏览器缓存加载该页面的情况下出现问题。 没有长久的cookie,在这种情况下表单提交将失败。
某些浏览器(特别是IE)可能会禁止使用持久性cookie或者磁盘上cookie的索引损坏,从而导致CSRF保护检查(有时会间歇性地)失败。
将此设置更改为None
可使用基于会话的CSRF Cookie,它将Cookie保存在内存中而不是在磁盘上。
CSRF_COOKIE_DOMAIN
¶默认值:None
设置CSRF cookie时要使用的域。 This can be useful for easily allowing cross-subdomain requests to be excluded from the normal cross site request forgery protection. 应将其设置为一个字符串,例如".example.com"
,以允许来自一个子域的表单的POST请求被另一个子域提供的视图接受。
Please note that the presence of this setting does not imply that Django’s CSRF protection is safe from cross-subdomain attacks by default - please see the CSRF limitations section.
CSRF_COOKIE_HTTPONLY
¶默认值:False
是否在CSRF Cookie上使用HttpOnly
标志。 如果设置为True
,客户端JavaScript将无法访问CSRF Cookie。
将CSRF cookie指定为HttpOnly
不提供任何实际的保护,因为CSRF仅用于防范跨域攻击。 如果攻击者可以通过JavaScript读取cookie,就像浏览器所知道的那样,它们已经在同一个域中,所以他们可以做任何他们喜欢的事情。 (XSS是一个比CSRF大得多的洞)
虽然这个设置几乎没有实际的好处,但安全审计员有时需要这样做。
如果您启用此功能,并且需要使用AJAX请求发送CSRF令牌的值,则JavaScript必须从页面上的隐藏的CSRF令牌表单输入而不是从cookie中提取值。
See SESSION_COOKIE_HTTPONLY
for details on HttpOnly
.
CSRF_COOKIE_NAME
¶默认值:'csrftoken'
要用于CSRF身份验证令牌的cookie的名称。 这可以是你想要的(只要它与应用程序中的其他cookie名称不同)。 请参阅Cross Site Request Forgery protection。
CSRF_COOKIE_PATH
¶默认值:'/'
在CSRF cookie上设置的路径。 这应该匹配您的Django安装的URL路径,或者是该路径的父级。
如果您有多个运行在相同主机名下的Django实例,这将非常有用。 他们可以使用不同的cookie路径,每个实例只会看到自己的CSRF cookie。
CSRF_COOKIE_SECURE
¶默认值:False
是否为CSRF Cookie使用安全Cookie。 如果将此设置为True
,则Cookie将被标记为“安全”,这意味着浏览器可能会确保Cookie仅使用HTTPS连接发送。
CSRF_USE_SESSIONS
¶默认值: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
参数。 如果具有该名称的模板存在,则将用于呈现页面。
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.com
从api.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',
}
}
下面是更复杂的配置可能需要的选项:
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
)。
OPTIONS
¶Default: {}
(默认为空的字典)
连接数据库时使用的额外参数。 可用的参数与你的数据库后端有关。
在 Database Backends的文档中可以找到可用的参数的一些信息。 有关详细信息,请参阅后端模块自己的文档。
TIME_ZONE
¶默认值:None
表示存储在此数据库中的数据时区的时区(假定它不支持时区)或None
的字符串。 在一般的TIME_ZONE
设置中接受相同的值。
这允许与在本地时间而不是UTC存储数据时间的第三方数据库进行交互。 为避免DST更改发生问题,您不应该为Django管理的数据库设置此选项。
当USE_TZ
是True
,数据库不支持时区(例如SQLite,MySQL,Oracle)时,Django根据此选项在本地时间内读取和写入数据时间被设置,如果不是UTC。
当USE_TZ
是True
,数据库支持时区(例如PostgreSQL)时,设置此选项是错误的。
当USE_TZ
为False
时,设置此选项是错误的。
DISABLE_SERVER_SIDE_CURSORS
¶默认值:False
如果要禁用使用QuerySet.iterator()
的服务器端游标,请将其设置为True
。 Transaction pooling and server-side cursors描述了用例。
这是一个PostgreSQL特定的设置。
TEST
¶Default: {}
(默认为空的字典)
测试数据库设置字典有关测试数据库的创建和使用的更多细节,请参见The test database。
以下是测试数据库配置的示例:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'USER': 'mydatabaseuser',
'NAME': 'mydatabase',
'TEST': {
'NAME': 'mytestdatabase',
},
},
}
TEST
字典中的以下键可用:
CHARSET
¶默认值:None
字符集设置用于指定数据库编码格式。 该设置的值会直接传给数据库,所以它的格式是由指定的数据库来决定的。
由PostgreSQL(postgresql
)和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
。
SERIALIZE
¶布尔值以控制在运行测试之前缺省测试运行器是否将数据库序列化为内存中的JSON字符串(用于在没有事务的情况下在测试之间恢复数据库状态)。 如果您没有任何具有serialized_rollback=True的测试类,您可以将其设置为False
以加快创建时间。
PASSWORD
¶默认值:None
这是Oracle特定的设置。
连接到运行测试时将使用的Oracle数据库时使用的密码。 如果没有提供,Django将会生成一个随机密码。
旧版本使用硬编码的默认密码。 这在1.10.3,1.9.11和1.8.16也有变化,以解决可能的安全隐患。
DATAFILE_TMP
¶默认值:None
这是Oracle特定的设置。
要用于TBLSPACE_TMP的数据文件的名称。 如果未提供,Django将使用TBLSPACE_TMP + '。dbf'
。
默认值:2621440
(即2.5 MB)。
在SuspiciousOperation
(RequestDataTooBig
)之前,请求主体可能出现的最大大小(以字节为单位)。 当访问request.body
或request.POST
时,检查完成,并根据除了任何文件上传数据的总请求大小计算。 您可以将其设置为None
以禁用检查。 预期会收到异常大的表单帖子的应用程序应调整此设置。
请求数据量与处理请求所需的内存量相关联,并填充GET和POST字典。 如果不选中,大型请求可以用作拒绝服务攻击向量。 由于Web服务器通常不会执行深度请求检查,所以不可能在该级别执行类似的检查。
默认值:1000
在SuspiciousOperation
(TooManyFields
)之前,可以通过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
。
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_L10N
为True
时,区域设置格式具有更高的优先级,将会应用。
DATETIME_FORMAT
¶默认值:'N j, Y, P'
二月 4, 2003年, 4 下午
)
用于在系统任何部分中显示datetime字段的默认格式。 请注意,如果USE_L10N
设置为True
,则区域设置格式具有更高的优先级,将会应用。 请参阅allowed date format strings
。
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_L10N
为True
时,区域设置格式具有更高的优先级,将会应用。
DEBUG
¶默认值:False
打开/关闭调试模式的布尔值。
部署网站的时候不要把DEBUG
打开.
你明白了吗? 部署网站的时候一定不要把 DEBUG
打开.
调试模式的一个重要特性是显示错误页面的细节。
当DEBUG
为 True
的时候,若你的应用产生了一个异常,Django 会显示追溯细节,包括许多环境变量的元数据, 比如所有当前定义的Django设置(在settings.py
中的).
作为安全措施,Django将不包含可能敏感的设置,例如SECRET_KEY
。 特别是名字中包含下面这些单词的设置:
'API'
'KEY'
'PASS'
'SECRET'
'SIGNATURE'
'TOKEN'
注意,这里使用的是 部分 匹配. 'PASS'
将匹配 PASSWORD, 另外 'TOKEN'
也将匹配 TOKENIZED 等等.
不过,总有一些调试的输出你不希望展现给公众的。 文件路径, 配置信息和其他,将会提供信息给攻击者来攻击你的服务器。
另外,很重要的是要记住当你运行时 DEBUG
模式打开的话, Django 记住所有执行的 SQL 查询语句。 这在进行 DEBUG 调试时非常有用, 但这会消耗运行服务器的大量内存资源.
最后,如果DEBUG
为False
,你还需要正确设置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_GROUPING
,THOUSAND_SEPARATOR
和USE_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'
用于来自站点管理员的各种自动通信的默认电子邮件地址。 这不包括发送到ADMINS
和MANAGERS
的错误消息;为此,请参阅SERVER_EMAIL
。
DISALLOWED_USER_AGENTS
¶默认值:[]
(空列表)
表示不允许访问系统范围内任何页面的User-Agent字符串的编译正则表达式对象列表。 用于坏的漫游器/抓取工具。
只有在安装CommonMiddleware
时才会使用(请参阅Middleware)。
EMAIL_HOST_PASSWORD
¶默认值:''
(空字符串)
EMAIL_HOST
定义的SMTP 服务器使用的密码。 这个设置与EMAIL_HOST_USER
一起用于SMTP 服务器的认证。 如果两个中有一个为空,Django 则不会尝试认证。
EMAIL_SUBJECT_PREFIX
¶默认值:'[Django] '
使用django.core.mail.mail_admins
或django.core.mail.mail_managers
发送的电子邮件的主题行前缀。 你可能想要包含结尾空格。
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_KEYFILE
¶默认值:None
如果EMAIL_USE_SSL
或EMAIL_USE_TLS
为True
,您可以选择指定要用于SSL连接的PEM格式的私钥文件的路径。
请注意,设置EMAIL_SSL_CERTFILE
和EMAIL_SSL_KEYFILE
不会导致任何证书检查。 它们将传递到底层SSL连接。 有关如何处理证书链文件和私钥文件的详细信息,请参阅Python的ssl.wrap_socket()
函数的文档。
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。
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表示星期一,依此类推。
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.setup()
中的使用已添加。
FORM_RENDERER
¶默认值:'
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_FORMAT
,TIME_FORMAT
,DATETIME_FORMAT
,YEAR_MONTH_FORMAT
,MONTH_DAY_FORMAT
,SHORT_DATE_FORMAT
,SHORT_DATETIME_FORMAT
,FIRST_DAY_OF_WEEK
,DECIMAL_SEPARATOR
,THOUSAND_SEPARATOR
和NUMBER_GROUPING
IGNORABLE_404_URLS
¶默认值:[]
(空列表)
通过电子邮件报告HTTP 404错误时应忽略的编译正则表达式对象列表(请参阅Error reporting)。 正则表达式与request's full paths
(包括查询字符串,如果有)匹配。 如果您的网站没有提供通常要求的档案(例如favicon.ico
或robots.txt
),或是遭到脚本小孩的攻击,请使用此方法。
只有在启用BrokenLinkEmailsMiddleware
(请参阅Middleware)时才会使用此选项。
INSTALLED_APPS
¶默认值:[]
(空列表)
指定在此Django安装中启用的所有应用程序的字符串列表。 每个字符串应该是一个 Python 的点分路径:
使用应用程序注册表进行自我检查
您的代码不应直接访问INSTALLED_APPS
。 请改用django.apps.apps
。
应用程序名称和标签在INSTALLED_APPS
中必须是唯一的
应用程序names
- 应用程序包的点分Python路径必须是唯一的。 没有办法包含相同的应用程序两次,没有重复其代码在另一个名称下。
应用程序labels
- 默认情况下,名称的最后一部分也必须是唯一的。 例如,您不能同时包含django.contrib.auth
和myproject.auth
。 但是,您可以使用定义不同label
的自定义配置重新标记应用程序。
无论INSTALLED_APPS
引用应用程序配置类还是应用程序包,这些规则都适用。
当多个应用程序提供相同资源(模板,静态文件,管理命令,翻译)的不同版本时,INSTALLED_APPS
中首先列出的应用程序优先。
INTERNAL_IPS
¶默认值:[]
(空列表)
IP地址列表,如下所示:
debug()
上下文处理器向模板上下文添加一些变量。AdminEmailHandler
电子邮件中标记为“内部”(而不是“EXTERNAL”)。LANGUAGE_CODE
¶默认值:'en-us'
表示此安装的语言代码的字符串。 这应该是标准的language ID format。 例如,美国英语是"en-us"
。 另请参阅语言标识符列表和Internationalization and localization。
USE_I18N
必须处于活动状态才能使此设置生效。
它有两个目的:
有关详细信息,请参见How Django discovers language preference。
LANGUAGE_COOKIE_DOMAIN
¶默认值:None
用于语言cookie的域名。 将它设置为一个字符串,如".example.com"
(注意前导点!) 对于跨域Cookie,或者使用None
作为标准域cookie。
在生产站点上更新此设置时要小心。 如果您更新此设置以在以前使用标准域Cookie的网站上启用跨网域Cookie,则不会更新具有旧网域的现有用户Cookie。 这将导致网站用户无法切换语言,只要这些Cookie持续存在。 执行切换的唯一安全可靠的选项是永久更改语言cookie名称(通过LANGUAGE_COOKIE_NAME
设置),并添加一个中间件,将旧值从一个新的cookie复制到一个新的,然后删除旧的。
LANGUAGE_COOKIE_NAME
¶默认值:'django_language'
用于语言Cookie的Cookie的名称。 这可以是你想要的(只要它与应用程序中的其他cookie名称不同)。 请参阅Internationalization and localization。
LANGUAGE_COOKIE_PATH
¶默认值:'/'
在语言cookie上设置的路径。 这应该匹配您的Django安装的URL路径,或者是该路径的父级。
如果您有多个运行在相同主机名下的Django实例,这将非常有用。 他们可以使用不同的cookie路径,每个实例只会看到自己的语言cookie。
在生产站点上更新此设置时要小心。 如果您将此设置更新为使用比之前使用的更深的路径,则不会更新具有旧路径的现有用户Cookie。 这将导致网站用户无法切换语言,只要这些Cookie持续存在。 执行切换的唯一安全可靠的选项是永久更改语言Cookie名称(通过LANGUAGE_COOKIE_NAME
设置),并添加中间件,将旧值从旧Cookie复制到新Cookie,然后删除一个。
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
中描述的配置方法。
其中,默认日志配置会在DEBUG
为False
时将HTTP 500服务器错误传递到电子邮件日志处理程序。 另请参见Configuring logging。
您可以在django/utils/log.py
(或查看在线源)中查看默认日志配置。
LOGGING_CONFIG
¶默认值:'logging.config.dictConfig'
将用于在Django项目中配置日志记录的可调用项的路径。 默认情况下,Python的dictConfig配置方法实例的点。
如果将LOGGING_CONFIG
设置为None
,将跳过日志配置过程。
MEDIA_ROOT
¶默认值:''
(空字符串)
指向存放用户上传的文件所在目录的文件系统绝对路径。
例如: "/var/www/example.com/media/"
另见MEDIA_URL
。
警告
MEDIA_ROOT
和STATIC_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_URL
和 STATIC_URL
必须设置为不同的值。 更多细节,请参见 MEDIA_ROOT
。
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_FORMAT
,DATETIME_FORMAT
,TIME_FORMAT
和YEAR_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_SEPARATOR
,THOUSAND_SEPARATOR
和USE_THOUSAND_SEPARATOR
。
增加了对不均匀数字分组的支持。
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将拒绝启动。
密钥用于:
django.contrib.sessions.backends.cache
,
or are using the default
get_session_auth_hash()
.CookieStorage
或FallbackStorage
,则所有messages。PasswordResetView
令牌。如果您更换密钥,上述所有内容都将失效。 密钥不用于用户的密码,密钥轮换不会影响用户密码。
注
由django-admin
startproject
创建的默认settings.py
文件创建一个唯一的SECRET_KEY
SECURE_BROWSER_XSS_FILTER
¶默认值:False
如果True
,SecurityMiddleware
设置X-XSS-Protection: 1; mode=block标题中所有没有它的响应。
SECURE_CONTENT_TYPE_NOSNIFF
¶默认值:False
如果True
,则SecurityMiddleware
在尚未拥有它的所有响应上设置X-Content-Type-Options: nosniff
SECURE_HSTS_INCLUDE_SUBDOMAINS
¶默认值:False
如果True
,则SecurityMiddleware
将includeSubDomains
指令添加到HTTP Strict Transport Security头。 除非SECURE_HSTS_SECONDS
设置为非零值,否则它不起作用。
警告
不正确地设置错误(对于SECURE_HSTS_SECONDS
的值)会破坏您的站点。 首先阅读HTTP Strict Transport Security文档。
SECURE_HSTS_PRELOAD
¶默认值:False
如果True
,SecurityMiddleware
将preload
指令添加到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名称的开头。
警告
如果您在不知道自己在做什么的情况下进行设置,您可能会在您的网站上打开安全漏洞。 如果你没有设置它,当你应该。 认真。
在设置之前,请确保以下所有条件成立(假设上述示例中的值):
X-Forwarded-Proto
标头。 换句话说,如果最终用户在其请求中包括该头,代理将丢弃它。X-Forwarded-Proto
标头,并将其发送到Django,但仅适用于最初通过HTTPS进入的请求。如果其中任何一个不正确,您应该将此设置设置为None
,并找到另一种确定HTTPS的方法,也许通过自定义中间件。
SECURE_REDIRECT_EXEMPT
¶默认值:[]
(空列表)
如果网址路径与此列表中的正则表达式匹配,则请求将不会重定向到HTTPS。 如果SECURE_SSL_REDIRECT
为False
,则此设置无效。
SECURE_SSL_HOST
¶默认值:None
如果字符串(例如secure.example.com
),所有SSL重定向将被定向到此主机,而不是原始请求的主机(例如www.example.com
) 。 如果SECURE_SSL_REDIRECT
为False
,则此设置无效。
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'
错误消息来源的电子邮件地址,例如发送到ADMINS
和MANAGERS
的电子邮件地址。
为什么我的电子邮件是从其他地址发送的?
此地址仅用于错误消息。 不是 send_mail()
发送的常规电子邮件的地址来自;为此,请参阅DEFAULT_FROM_EMAIL
。
SHORT_DATE_FORMAT
¶默认值:'m/d/Y'
(例如12/31/2003
)
可用于在模板上显示日期字段的可用格式。 请注意,如果USE_L10N
设置为True
,则相应的区域设置格式具有更高的优先级,并将应用。
请参阅allowed date format strings
。
SHORT_DATETIME_FORMAT
¶默认值:'m / d / Y P'
2003年12月31日 4 下午
)
可用于在模板上显示datetime字段的可用格式。 请注意,如果USE_L10N
设置为True
,则相应的区域设置格式具有更高的优先级,并将应用。
请参阅allowed date format strings
。
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'
。
APP_DIRS
¶默认值:False
Templates引擎是否应该在已安装的app中查找Template源文件
注
由django-admin
startproject
设置的默认settings.py
文件 'APP_DIRS': 真正
.
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_SEPARATOR
为True
且NUMBER_GROUPING
大于0
时使用。
请注意,如果USE_L10N
设置为True
,则区域设置格式具有更高的优先级,将会应用。
另请参阅NUMBER_GROUPING
,DECIMAL_SEPARATOR
和USE_THOUSAND_SEPARATOR
。
TIME_FORMAT
¶默认值:'P'
(例如 4 下午
)
用于在系统任何部分中显示时间字段的默认格式。 请注意,如果USE_L10N
设置为True
,则区域设置格式具有更高的优先级,将会应用。 请参阅allowed date format strings
。
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_L10N
为True
时,区域设置格式具有更高的优先级,将会应用。
TIME_ZONE
¶默认:'America/Chicago'
一个字符串,表示安装的Django所在的时区。 参见时区列表。
注
因为Django第一次发布时,TIME_ZONE
设置为 'America/Chicago'
,为了向前兼容,这个全局设置仍然保留为'America/Chicago'
(在你的项目的settings.py
中没有定义时使用)。 新的项目模板默认为'UTC'
。
注意,它不一定要和服务器的时区一致。 例如,一个服务器可上可能有多个Django 站点,每个站点都有一个单独的时区设置。
当USE_TZ
为False
时,它将成为Django 存储所有日期和时间时使用的时区。 当USE_TZ
为True
时,它是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
头。 这种方式会节省带宽但是会降低性能, 这被CommonMiddleware
和cache
framework中使用。
自1.11版以来已弃用 此设置不利于使用ConditionalGetMiddleware
,它设置一个ETag,而不管此设置如何。
USE_I18N
¶默认值:True
这是一个布尔值,它指定Django的翻译系统是否被启用。
它提供了一种简单的方式去关闭翻译系统。 如果设置为 False
, Django 会做一些优化,不去加载翻译机制
另请参见LANGUAGE_CODE
,USE_L10N
和USE_TZ
。
注
由django-admin
startproject
创建的默认settings.py
文件包括USE_I18N t7> = True
为方便起见。
USE_L10N
¶默认值:False
是一个布尔值,用于决定是否默认进行日期格式本地化。 如果此设置为True
,例如Django将使用当前语言环境的格式显示数字和日期。
另请参见LANGUAGE_CODE
,USE_I18N
和USE_TZ
。
注
由django-admin
startproject
创建的默认settings.py
文件包括USE_L10N t7> = True
为方便起见。
USE_THOUSAND_SEPARATOR
¶默认值:False
一个布尔值,指定是否使用千位分隔符显示数字。
当USE_L10N
设置为True
,如果这也设置为True
,Django将使用THOUSAND_SEPARATOR
和NUMBER_GROUPING
格式化数字,除非语言环境已经有一个现有的千位分隔符。 如果在区域设置格式中有一个成千上万的分隔符,它将具有更高的优先级,并将被替代。
USE_TZ
¶默认值:False
这是一个布尔值,用来指定是否使用指定的时区(TIME_ZONE)的时间.
若为 True
, 则Django 会使用内建的时区的时间
否则, Django 将会使用本地的时间
另请参阅TIME_ZONE
,USE_I18N
和USE_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-7,X-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_FORMAT
,DATETIME_FORMAT
,TIME_FORMAT
和MONTH_DAY_FORMAT
。
X_FRAME_OPTIONS
¶默认值:'SAMEORIGIN'
XFrameOptionsMiddleware
使用的X-Frame-Options标头的默认值。 请参阅clickjacking protection文档。
用于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
¶默认值:None
使用LogoutView
(如果视图没有获得next_page
参数)退出用户后,请求被重定向的URL。
如果None
,则不执行重定向,并且将退出注销视图。
此设置还接受可以用于减少配置重复的named URL patterns,因为您不必在两个位置(settings
和URLconf)中定义URL。
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',
]
以下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。 默认情况下,不执行任何验证,并接受所有密码。
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的后端 - CookieStorage
和FallbackStorage
- 使用SESSION_COOKIE_DOMAIN
,SESSION_COOKIE_SECURE
和SESSION_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中的值直接指定常数的数值。
SESSION_COOKIE_DOMAIN
¶默认值:None
域名用于做会话的cookies. 将它设置为一个字符串,如".example.com"
(注意前导点!) 对于跨域Cookie,或者使用None
作为标准域cookie。
在生产站点上更新此设置时要小心。 如果您更新此设置以在之前使用标准域Cookie的网站上启用跨域Cookie,则现有用户Cookie将设置为旧域。 这可能会导致他们无法登录,只要这些cookie持续。
此设置还会影响由django.contrib.messages
设置的Cookie。
SESSION_COOKIE_HTTPONLY
¶默认值:True
是否在会话Cookie上使用HTTPOnly
标志。 如果设置为True
,客户端JavaScript将无法访问会话Cookie。
HTTPOnly是Set-Cookie HTTP响应标头中包含的标志。 它不是Cookie的 RFC 2109 但是,当它受到尊重时,它可以是减轻客户端脚本访问受保护的cookie数据的风险的有用方式。
启用它,使攻击者将跨站点脚本漏洞升级为完全劫持用户会话变得不那么简单。 有没有什么借口离开这个,或者:如果你的代码依赖于阅读会话cookie从JavaScript,你可能是做错了。
SESSION_COOKIE_PATH
¶默认值:'/'
在会话cookie上设置的路径。 这应该匹配您的Django安装的URL路径或该路径的父级。
如果您有多个运行在相同主机名下的Django实例,这将非常有用。 他们可以使用不同的cookie路径,每个实例只会看到自己的会话cookie。
SESSION_COOKIE_SECURE
¶默认值:False
是否对会话cookie使用安全cookie。 如果此设置为True
,则Cookie将被标记为“安全”,这意味着浏览器可以确保该Cookie仅在HTTPS连接下发送。
由于如果会话cookie未加密发送,数据包嗅探器(例如Firesheep)就劫持用户的会话,这是很平常的,真的没有什么好的借口离开这个。 它会阻止你使用不安全的请求会话,这是一件好事。
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'
SESSION_EXPIRE_AT_BROWSER_CLOSE
¶默认值:False
是否在用户关闭浏览器时过期会话。 请参阅Browser-length sessions vs. persistent sessions。
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
时可能的远程代码执行的警告。
django.contrib.staticfiles
的相关设置。
STATIC_ROOT
¶默认值:None
collectstatic
为部署而收集的静态文件的目录的绝对路径。
示例:"/var/www/example.com/static/"
如果启用staticfiles contrib应用(项目的模板默认启用),则collectstatic
管理命令将静态文件收集到此目录中。 有关使用情况的更多详细信息,请参阅管理静态文件的how-to。
警告
这应该是一个最初的空目标目录,用于将静态文件从永久位置收集到一个目录中,以方便部署;它不是永久存储静态文件的地方。 你应该在staticfiles的finders
找到的目录中,它默认是'static/'
app子目录以及您在STATICFILES_DIRS
中包含的任何目录)。
STATIC_URL
¶默认值:None
引用位于STATIC_ROOT
中的静态文件时使用的网址。
示例:"/static/"
或"http://static.example.com/"
如果不是None
,则将用作asset definitions(Media
类)和staticfiles应用。
该URL设置为非空值时,必须以斜杠“/”结束。
可能需要在开发过程中服务这些文件,但是在生产环境中肯定需要。
STATICFILES_DIRS
¶默认值:[]
(空列表)
此设置定义了在启用FileSystemFinder
finder时staticfiles应用程序将遍历的附加位置。如果您使用collectstatic
或findstatic
管理命令或使用静态文件提供视图。
应将此设置为包含其他文件目录的完整路径的字符串列表,例如:
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
中找到此设置中定义的存储后端的即时使用实例。
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
设定即可。
静态文件查找器目前被认为是一个私有接口,因此这个接口是未被文档记录的。
i18n
/ l10n
)¶DATE_FORMAT
DATE_INPUT_FORMATS
DATETIME_FORMAT
DATETIME_INPUT_FORMATS
DECIMAL_SEPARATOR
FIRST_DAY_OF_WEEK
FORMAT_MODULE_PATH
LANGUAGE_CODE
LANGUAGE_COOKIE_AGE
LANGUAGE_COOKIE_DOMAIN
LANGUAGE_COOKIE_NAME
LANGUAGE_COOKIE_PATH
LANGUAGES
LOCALE_PATHS
MONTH_DAY_FORMAT
NUMBER_GROUPING
SHORT_DATE_FORMAT
SHORT_DATETIME_FORMAT
THOUSAND_SEPARATOR
TIME_FORMAT
TIME_INPUT_FORMATS
TIME_ZONE
USE_I18N
USE_L10N
USE_THOUSAND_SEPARATOR
USE_TZ
YEAR_MONTH_FORMAT
TEST
TEST_NON_SERIALIZED_APPS
TEST_RUNNER
2017年9月6日