警告
重写设置时要小心,尤其是当默认值为非空列表或字典时,例如 STATICFILES_FINDERS
. 请确保保留您希望使用的Django功能所需的组件。
以下是Django Core中可用的设置列表及其默认值。下面列出了Contrib应用程序提供的设置,然后是核心设置的主题索引。有关介绍性材料,请参见 settings topic guide .
ABSOLUTE_URL_OVERRIDES
¶违约: {{}}
(空字典)
字典映射 "app_label.model_name"
获取模型对象并返回其URL的函数的字符串。这是插入或重写 get_absolute_url()
每个安装的方法。例子::
ABSOLUTE_URL_OVERRIDES = {
"blogs.blog": lambda o: "/blogs/%s/" % o.slug,
"news.story": lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
此设置中使用的模型名称应全部为小写,而不考虑实际模型类名的大小写。
ADMINS
¶违约: []
(空表)
获取代码错误通知的所有人员的列表。什么时候? DEBUG=False
和 AdminEmailHandler
在中配置 LOGGING
(默认情况下完成),Django向这些人发送请求/响应周期中提出的异常的详细信息。
列表中的每个项目都应该是(全名、电子邮件地址)的元组。例子::
[("John", "john@example.com"), ("Mary", "mary@example.com")]
ALLOWED_HOSTS
¶违约: []
(空表)
表示此django站点可以服务的主机/域名的字符串列表。这是防止 HTTP Host header attacks 这在许多看似安全的Web服务器配置下都是可能的。
此列表中的值可以是完全限定名(例如 'www.example.com'
,在这种情况下,它们将与请求的 Host
头完全正确(不区分大小写,不包括端口)。以句点开头的值可以用作子域通配符: '.example.com'
将匹配 example.com
, www.example.com
以及 example.com
. 一个值 '*'
将匹配任何内容;在这种情况下,您有责任提供您自己的验证 Host
头(可能在中间件中;如果是,则必须首先列出此中间件 MIDDLEWARE
)
Django还允许 fully qualified domain name (FQDN) 任何条目。有些浏览器在 Host
Django在执行主机验证时剥离的头。
如果 Host
页眉(或) 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()
;如果您的代码访问 Host
标题直接来自 request.META
您正在绕过此安全保护。
APPEND_SLASH
¶违约: True
当设置为 True
,如果请求URL与urlconf中的任何模式都不匹配,并且没有以斜线结尾,则会向同一URL发出HTTP重定向,并附加斜线。请注意,重定向可能会导致在POST请求中提交的任何数据丢失。
这个 APPEND_SLASH
设置仅在以下情况下使用 CommonMiddleware
已安装(请参见 中间件 )也见 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.PyMemcacheCache'
'django.core.cache.backends.memcached.PyLibMCCache'
'django.core.cache.backends.redis.RedisCache'
通过设置,您可以使用不随Django提供的缓存后端 BACKEND
到缓存后端类的完全限定路径(即 mypackage.backends.whatever.WhateverCache
)
KEY_FUNCTION
¶包含指向函数(或任何可调用函数)的点式路径的字符串,该函数定义如何将前缀、版本和键组合到最终缓存键中。默认实现等效于函数:
def make_key(key, key_prefix, version):
return ":".join([key_prefix, str(version), key])
您可以使用您想要的任何键函数,只要它具有相同的参数签名。
见 cache documentation 更多信息。
KEY_PREFIX
¶违约: ''
(空字符串)
一个字符串,它将自动包含到Django服务器使用的所有缓存键中(默认情况下是预先准备好的)。
见 cache documentation 更多信息。
LOCATION
¶违约: ''
(空字符串)
要使用的缓存的位置。这可能是文件系统缓存的目录、memache服务器的主机和端口,或者本地内存缓存的标识名称。例如::
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
"LOCATION": "/var/tmp/django_cache",
}
}
OPTIONS
¶违约: None
传递到缓存后端的额外参数。可用参数因缓存后端而异。
有关可用参数的一些信息,请参见 cache arguments 文档。有关更多信息,请参阅后端模块自己的文档。
TIMEOUT
¶违约: 300
缓存条目被视为过时之前的秒数。如果此设置的值为 None
,缓存条目不会过期。价值为 0
导致密钥立即过期(实际上是“不缓存”)。
VERSION
¶违约: 1
Django服务器生成的缓存键的默认版本号。
见 cache documentation 更多信息。
CACHE_MIDDLEWARE_ALIAS
¶违约: 'default'
要用于的缓存连接 cache middleware .
CACHE_MIDDLEWARE_KEY_PREFIX
¶违约: ''
(空字符串)
将在由 cache middleware . 此前缀与 KEY_PREFIX
设置;它不替换它。
见 Django的缓存框架 .
CACHE_MIDDLEWARE_SECONDS
¶违约: 600
缓存页面的默认整秒数 cache middleware 。
见 Django的缓存框架 .
CSRF_USE_SESSIONS
¶违约: False
是否在用户会话中而不是在cookie中存储CSRF令牌。它需要使用 django.contrib.sessions
.
将CSRF令牌存储在cookie(Django的默认值)中是安全的,但是在会话中存储它是其他Web框架中的常见做法,因此有时安全审计人员会要求这样做。
自从 default error views 需要CSRF令牌, SessionMiddleware
必须出现在 MIDDLEWARE
在任何可能引发异常以触发错误视图的中间件(例如 PermissionDenied
)如果你在使用 CSRF_USE_SESSIONS
. 见 中间件排序 .
CSRF_FAILURE_VIEW
¶违约: 'django.views.csrf.csrf_failure'
当传入请求被 CSRF protection . 函数应具有以下签名:
def csrf_failure(request, reason=""): ...
在哪里? reason
是一条短消息(用于开发人员或日志记录,不用于最终用户),指示拒绝请求的原因。它应该返回 HttpResponseForbidden
.
django.views.csrf.csrf_failure()
接受额外的 template_name
默认为的参数 '403_csrf.html'
. 如果存在具有该名称的模板,则将使用该模板呈现页面。
CSRF_HEADER_NAME
¶违约: 'HTTP_X_CSRFTOKEN'
用于CSRF身份验证的请求头的名称。
与中的其他HTTP头相同 request.META
,通过将所有字符转换为大写、用下划线替换任何连字符并添加 'HTTP_'
名称的前缀。例如,如果客户机发送 'X-XSRF-TOKEN'
标题,设置应为 'HTTP_X_XSRF_TOKEN'
.
CSRF_TRUSTED_ORIGINS
¶违约: []
(空表)
不安全请求的可信来源列表(例如 POST
)。
对于包含 Origin
标头,Django的CSRF保护要求标头与 Host
标题。
为. secure
不安全的请求,不包括 Origin
标头,则请求必须具有 Referer
标头,该标头与 Host
标题。
例如,这些检查可防止 POST
request from subdomain.example.com
from succeeding against api.example.com
. If you need cross-origin unsafe requests, continuing the example, add 'https://subdomain.example.com'
to this list (and/or http://...
如果请求源自不安全的页面)。
该设置还支持子域,因此您可以添加 'https://*.example.com'
例如,要允许从的所有子域访问 example.com
。
DATABASES
¶违约: {{}}
(空字典)
包含要与Django一起使用的所有数据库的设置的字典。它是一个嵌套字典,其内容将数据库别名映射到包含单个数据库选项的字典。
这个 DATABASES
设置必须配置 default
数据库;还可以指定任意数量的其他数据库。
最简单的设置文件是针对使用sqlite的单个数据库设置。可以使用以下方法配置:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": "mydatabase",
}
}
当连接到其他数据库后台(例如MariaDB、SQL、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
将每个视图包装在此数据库上的事务中。见 将事务与HTTP请求绑定 .
AUTOCOMMIT
¶违约: True
设置为 False
如果你想 disable Django's transaction management 实现你自己的。
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套接字连接到指定的套接字。例如::
"HOST": "/var/run/mysql"
如果您使用的是mysql和这个值 不 从正斜杠开始,然后假设该值是主机。
如果使用PostgreSQL,默认情况下(空 HOST
)与数据库的连接是通过Unix域套接字(中的“本地”行)完成的。 pg_hba.conf
)如果Unix域套接字不在标准位置,请使用 unix_socket_directory
从 postgresql.conf
. 如果要通过TCP套接字连接,请设置 HOST
到“localhost”或“127.0.0.1”(中的“host”行) pg_hba.conf
)在Windows上,应始终定义 HOST
,因为Unix域套接字不可用。
NAME
¶违约: ''
(空字符串)
要使用的数据库的名称。对于sqlite,它是数据库文件的完整路径。指定路径时,始终使用正斜杠,即使在Windows(例如 C:/homes/user/mysite/sqlite3.db
)
CONN_MAX_AGE
¶违约: 0
数据库连接的生存期,以秒为单位。使用 0
在每个请求结束时关闭数据库连接-Django的历史行为-以及 None
不限量 persistent database connections 。
CONN_HEALTH_CHECKS
¶违约: False
如果设置为 True
,现有 persistent database connections 在执行数据库访问的每个请求中重复使用它们之前,将进行运行状况检查。如果运行状况检查失败,当连接不再可用但数据库服务器准备好接受和服务新连接时(例如,在数据库服务器重新启动关闭现有连接之后),将重新建立连接,而不会导致请求失败。
OPTIONS
¶违约: {{}}
(空字典)
连接到数据库时要使用的额外参数。可用参数因数据库后端而异。
有关可用参数的一些信息,请参见 Database Backends 文档。有关更多信息,请参阅后端模块自己的文档。
PASSWORD
¶违约: ''
(空字符串)
连接到数据库时使用的密码。不用于sqlite。
PORT
¶违约: ''
(空字符串)
连接到数据库时要使用的端口。空字符串表示默认端口。不用于sqlite。
TIME_ZONE
¶违约: None
表示此数据库连接时区的字符串或 None
.这种内在的选择 DATABASES
设置接受与一般相同的值 TIME_ZONE
布景。
什么时候 USE_TZ
是 True
,则从数据库读取DateTime返回Aware DateTime,如果不是,则将时区设置为该选项的值 None
,或以其他方式发送至UTC。
什么时候? USE_TZ
是 False
,设置此选项时出错。
如果数据库后台不支持时区(例如SQLite、SQL、Oracle),Django会根据此选项以本地时间读取和写入日期时间(如果未设置),则会根据本地时间读取和写入日期时间(如果未设置)。
更改连接时区会更改从数据库中读取和写入日期时间的方式。
如果Django管理数据库,而您没有足够的理由进行其他操作,则应该不设置此选项。最好将日期时间存储在UTC中,因为这样可以避免在夏令时更改期间出现不明确或不存在的日期时间。此外,接收UTC格式的DateTime使DateTime算法变得简单--不需要考虑DST转换过程中潜在的偏移量变化。
如果您要连接到以本地时间而不是UTC存储日期时间的第三方数据库,则必须将此选项设置为适当的时区。同样,如果Django管理数据库,但第三方系统连接到同一数据库并希望找到本地时间的日期时间,那么您必须设置此选项。
如果数据库后端支持时区(例如,PostgreSQL),则数据库连接的时区将设置为此值。
尽管将 TIME_ZONE
选项很少需要,但在某些情况下它是必要的。具体地说,建议与通用 TIME_ZONE
处理涉及诸如PostgreSQL的日期/时间函数的原始查询时的设置 date_trunc()
或 generate_series()
,特别是在生成转换夏令时的基于时间的序列时。
此值可以随时更改,数据库将处理日期时间到配置的时区的转换。
然而,这也有一个缺点:在本地时间接收所有日期时间会使日期时间算法更加复杂--您必须考虑到DST转换过程中可能发生的偏移量变化。
考虑显式转换为当地时间 AT TIME ZONE
在原始SQL查询中,而不是设置 TIME_ZONE
选择。
DISABLE_SERVER_SIDE_CURSORS
¶违约: False
设置为 True
如果要禁用服务器端光标 QuerySet.iterator()
. 事务池和服务器端游标 描述用例。
这是PostgreSQL特有的设置。
USER
¶违约: ''
(空字符串)
连接到数据库时使用的用户名。不用于sqlite。
TEST
¶违约: {{}}
(空字典)
测试数据库的设置字典;有关创建和使用测试数据库的详细信息,请参阅 测试数据库 .
下面是一个测试数据库配置的示例:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"USER": "mydatabaseuser",
"NAME": "mydatabase",
"TEST": {
"NAME": "mytestdatabase",
},
},
}
中的以下键 TEST
字典可用:
CHARSET
¶违约: None
用于创建测试数据库的字符集编码。这个字符串的值直接传递给数据库,因此其格式是后端特定的。
支持 PostgreSQL (postgresql
) MySQL (mysql
后端。
COLLATION
¶违约: None
创建测试数据库时要使用的排序规则顺序。该值直接传递到后端,因此其格式是后端特定的。
仅支持 mysql
后端(参见 MySQL manual 详情请参阅。
DEPENDENCIES
¶违约: ['default']
,对于除 default
,没有依赖项。
数据库的创建顺序依赖项。请参阅上的文档 controlling the creation order of test databases 有关详细信息。
MIGRATE
¶违约: True
当设置为时 False
,创建测试数据库时不会运行迁移。这与设置类似 None
作为一个值 MIGRATION_MODULES
,但适用于所有应用程序。
MIRROR
¶违约: None
此数据库在测试期间应镜像的数据库的别名。它取决于事务,因此必须在 TransactionTestCase
而不是 TestCase
。
此设置允许测试多个数据库的主/副本(某些数据库称为主/从)配置。请参阅上的文档 testing primary/replica configurations 有关详细信息。
NAME
¶违约: None
运行测试套件时要使用的数据库的名称。
如果默认值 (None
)与sqlite数据库引擎一起使用时,测试将使用内存驻留数据库。对于所有其他数据库引擎,测试数据库将使用名称 'test_' + DATABASE_NAME
.
见 测试数据库 .
TEMPLATE
¶这是PostgreSQL特有的设置。
A的名字 template (例如) 'template0'
)从中创建测试数据库。
CREATE_DB
¶违约: True
这是Oracle特定的设置。
如果设置为 False
测试表空间不会在测试开始时自动创建,也不会在测试结束时删除。
CREATE_USER
¶违约: True
这是Oracle特定的设置。
如果设置为 False
,测试用户将不会在测试开始时自动创建,并在测试结束时删除。
USER
¶违约: None
这是Oracle特定的设置。
连接到运行测试时将使用的Oracle数据库时使用的用户名。如果没有提供,Django将使用 'test_' + USER
.
PASSWORD
¶违约: None
这是Oracle特定的设置。
连接到运行测试时将使用的Oracle数据库时使用的密码。如果没有提供,Django将生成随机密码。
ORACLE_MANAGED_FILES
¶违约: False
这是Oracle特定的设置。
如果设置为 True
,将使用Oracle托管文件(OMF)表空间。 DATAFILE
和 DATAFILE_TMP
将被忽略。
TBLSPACE
¶违约: None
这是Oracle特定的设置。
运行测试时将使用的表空间的名称。如果没有提供,Django将使用 'test_' + USER
.
TBLSPACE_TMP
¶违约: None
这是Oracle特定的设置。
运行测试时将使用的临时表空间的名称。如果没有提供,Django将使用 'test_' + USER + '_temp'
.
DATAFILE
¶违约: None
这是Oracle特定的设置。
用于tblspace的数据文件的名称。如果没有提供,Django将使用 TBLSPACE + '.dbf'
.
DATAFILE_TMP
¶违约: None
这是Oracle特定的设置。
用于tblspace_tmp的数据文件的名称。如果没有提供,Django将使用 TBLSPACE_TMP + '.dbf'
.
DATAFILE_MAXSIZE
¶违约: '500M'
这是Oracle特定的设置。
允许数据文件增长到的最大大小。
DATAFILE_TMP_MAXSIZE
¶违约: '500M'
这是Oracle特定的设置。
允许数据文件_TMP增长到的最大大小。
DATAFILE_SIZE
¶违约: '50M'
这是Oracle特定的设置。
数据文件的初始大小。
DATAFILE_TMP_SIZE
¶违约: '50M'
这是Oracle特定的设置。
数据文件的初始大小。
DATAFILE_EXTSIZE
¶违约: '25M'
这是Oracle特定的设置。
当需要更多空间时,数据文件的扩展量。
DATAFILE_TMP_EXTSIZE
¶违约: '25M'
这是Oracle特定的设置。
当需要更多空间时,数据文件_TMP的扩展量。
DATA_UPLOAD_MAX_MEMORY_SIZE
¶违约: 2621440
(即2.5 MB)。
请求正文在 SuspiciousOperation
(RequestDataTooBig
)。访问时检查完成 request.body
或 request.POST
并根据总请求大小(不包括任何文件上载数据)进行计算。你可以把这个设置为 None
禁用检查。预期接收异常大表单文章的应用程序应调整此设置。
请求数据量与处理请求和填充get和post字典所需的内存量相关。如果不选中,大请求可以用作拒绝服务攻击向量。由于Web服务器通常不执行深度请求检查,因此不可能在该级别执行类似的检查。
DATA_UPLOAD_MAX_NUMBER_FIELDS
¶违约: 1000
在 SuspiciousOperation
(TooManyFields
)。你可以把这个设置为 None
禁用检查。希望接收异常大量表单字段的应用程序应调整此设置。
请求参数的数量与处理请求和填充get和post字典所需的时间量相关。如果不选中,大请求可以用作拒绝服务攻击向量。由于Web服务器通常不执行深度请求检查,因此不可能在该级别执行类似的检查。
DATA_UPLOAD_MAX_NUMBER_FILES
¶默认: 100
The maximum number of files that may be received via POST in a
multipart/form-data
encoded request before a
SuspiciousOperation
(TooManyFiles
) is
raised. You can set this to None
to disable the check. Applications that
are expected to receive an unusually large number of file fields should tune
this setting.
接受的文件数量与处理请求所需的时间和内存量相关。如果不进行检查,大型请求可能会被用作拒绝服务攻击载体。由于Web服务器通常不执行深度请求检查,因此不可能在该级别执行类似的检查。
DATABASE_ROUTERS
¶违约: []
(空表)
将用于确定执行数据库查询时要使用的数据库的路由器列表。
请参阅上的文档 automatic database routing in multi database configurations .
DATE_FORMAT
¶违约: 'N j, Y'
(例如) Feb. 4, 2003
)
用于在系统的任何部分显示日期字段的默认格式。请注意,区域设置规定的格式具有更高的优先级,将改为应用。看见 allowed date format strings
。
也见 DATETIME_FORMAT
, TIME_FORMAT
和 SHORT_DATE_FORMAT
.
DATE_INPUT_FORMATS
¶违约::
[
"%Y-%m-%d", # '2006-10-25'
"%m/%d/%Y", # '10/25/2006'
"%m/%d/%y", # '10/25/06'
"%b %d %Y", # 'Oct 25 2006'
"%b %d, %Y", # 'Oct 25, 2006'
"%d %b %Y", # '25 Oct 2006'
"%d %b, %Y", # '25 Oct, 2006'
"%B %d %Y", # 'October 25 2006'
"%B %d, %Y", # 'October 25, 2006'
"%d %B %Y", # '25 October 2006'
"%d %B, %Y", # '25 October, 2006'
]
在日期字段中输入数据时接受的格式列表。将按顺序尝试格式,使用第一个有效的格式。注意,这些格式字符串使用的是python的 datetime module syntax ,而不是来自 date
模板筛选器。
区域设置规定的格式具有更高的优先级,将改为应用。
DATETIME_FORMAT
¶违约: 'N j, Y, P'
(例如) Feb. 4, 2003, 4 p.m.
)
用于在系统的任何部分显示日期时间字段的默认格式。请注意,区域设置规定的格式具有更高的优先级,将改为应用。看见 allowed date format strings
。
也见 DATE_FORMAT
, TIME_FORMAT
和 SHORT_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'
"%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 %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'
]
在日期时间字段中输入数据时将接受的格式列表。将使用第一个有效的副本按顺序尝试副本。请注意,这些格式字符串使用Python的 datetime module syntax ,而不是来自 date
模板过滤器。不包括仅日期格式,因为日期时间字段将自动尝试 DATE_INPUT_FORMATS
在最后的手段。
区域设置规定的格式具有更高的优先级,将改为应用。
DEBUG
¶违约: False
打开/关闭调试模式的布尔值。
从不将站点部署到生产中 DEBUG
打开。
调试模式的主要功能之一是显示详细的错误页。如果应用程序在以下情况下引发异常: DEBUG
是 True
,django将显示详细的回溯,包括许多有关您的环境的元数据,例如当前定义的所有django设置(从 settings.py
)
作为一项安全措施,Django将 not 包括可能敏感的设置,例如 SECRET_KEY
. 具体来说,它将排除名称包含以下任何内容的任何设置:
'API'
'KEY'
'PASS'
'SECRET'
'SIGNATURE'
'TOKEN'
注意这些是 部分的 比赛。 'PASS'
也将匹配密码,就像 'TOKEN'
还将匹配标记化等。
不过,请注意,调试输出中总会有不适合公共使用的部分。文件路径、配置选项等都为攻击者提供了有关服务器的额外信息。
同样重要的是,在运行时 DEBUG
打开后,django将记住它执行的每个SQL查询。这在调试时很有用,但它会快速消耗生产服务器上的内存。
最后,如果 DEBUG
是 False
,您还需要正确设置 ALLOWED_HOSTS
设置。如果不这样做,将导致所有请求作为“错误请求(400)”返回。
备注
默认值 settings.py
创建的文件 django-admin startproject
集合 DEBUG = True
为了方便。
DEBUG_PROPAGATE_EXCEPTIONS
¶违约: False
如果设置为 True
,Django对视图函数的异常处理 (handler500
,或调试视图(如果 DEBUG
是 True
)和记录500个回复 (django.request )被跳过,异常向上传播。
这对某些测试设置很有用。除非您希望Web服务器(而不是Django)生成“内部服务器错误”响应,否则不应在活动网站上使用它。在这种情况下,请确保服务器没有在响应中显示堆栈跟踪或其他敏感信息。
DECIMAL_SEPARATOR
¶违约: '.'
(点)
设置小数格式时使用的默认小数分隔符。
请注意,区域设置规定的格式具有更高的优先级,将改为应用。
也见 NUMBER_GROUPING
, THOUSAND_SEPARATOR
和 USE_THOUSAND_SEPARATOR
.
DEFAULT_AUTO_FIELD
¶默认: '
:类:' django.db.models.AutoField ' '
用于不具有字段的模型的默认主关键字字段类型 primary_key=True
。
DEFAULT_CHARSET
¶违约: 'utf-8'
用于所有人的默认字符集 HttpResponse
对象(如果未手动指定MBE类型)。在构建 Content-Type
标题。
DEFAULT_EXCEPTION_REPORTER
¶默认: '
:类:' django.views.debug.ExceptionReporter ' '
如果未将任何异常报告器类分配给 HttpRequest
实例尚未。看到 自定义错误报告 。
DEFAULT_EXCEPTION_REPORTER_FILTER
¶违约: '
:class:django.views.debug.safeexceptionreporterfilter'
如果未将任何异常报告程序筛选器类分配给 HttpRequest
实例。见 Filtering error reports .
DEFAULT_FROM_EMAIL
¶违约: 'webmaster@localhost'
站点经理自动通信的默认电子邮件地址。该地址用于 From:
传出电子邮件的标题,可以采用所选电子邮件发送协议中有效的任何格式。
这不会影响发送到的错误消息 ADMINS
和 MANAGERS
。看见 SERVER_EMAIL
就因为这个。
DEFAULT_INDEX_TABLESPACE
¶违约: ''
(空字符串)
如果后端支持,则用于未指定索引的字段的索引的默认表空间(请参见 表空间 )
DEFAULT_TABLESPACE
¶违约: ''
(空字符串)
如果后端支持,则用于未指定表空间的模型的默认表空间(请参见 表空间 )
DISALLOWED_USER_AGENTS
¶违约: []
(空表)
表示不允许访问任何页面(系统范围)的用户代理字符串的已编译正则表达式对象列表。用于爬虫/爬虫。仅在以下情况下使用 CommonMiddleware
已安装(请参见 中间件 )
EMAIL_BACKEND
¶违约: '
:class:django.core.mail.backends.smtp.emailbackend'
用于发送电子邮件的后台。有关可用后台列表,请参阅 电子邮件后端 。
EMAIL_FILE_PATH
¶默认:未定义
使用的目录 file email backend 来存储输出文件。
EMAIL_HOST
¶违约: 'localhost'
用于发送电子邮件的主机。
也见 EMAIL_PORT
.
EMAIL_HOST_PASSWORD
¶违约: ''
(空字符串)
用于中定义的SMTP服务器的密码 EMAIL_HOST
. 此设置与 EMAIL_HOST_USER
对SMTP服务器进行身份验证时。如果这些设置中的任何一个为空,Django将不会尝试身份验证。
也见 EMAIL_HOST_USER
.
EMAIL_HOST_USER
¶违约: ''
(空字符串)
用于中定义的SMTP服务器的用户名 EMAIL_HOST
. 如果为空,Django将不会尝试身份验证。
也见 EMAIL_HOST_PASSWORD
.
EMAIL_PORT
¶违约: 25
用于中定义的SMTP服务器的端口 EMAIL_HOST
.
EMAIL_SUBJECT_PREFIX
¶违约: '[Django] '
用于发送电子邮件的主题行前缀 django.core.mail.mail_admins
或 django.core.mail.mail_managers
. 您可能需要包含尾随空格。
EMAIL_USE_LOCALTIME
¶违约: False
是否发送SMTP Date
本地时区的电子邮件标题 (True
或在UTC中 (False
)
EMAIL_USE_TLS
¶违约: False
与SMTP服务器对话时是否使用TLS(安全)连接。这通常用于端口587上的显式TLS连接。如果遇到挂起连接,请参阅隐式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_SSL
或 EMAIL_USE_TLS
是 True
,您可以选择指定用于SSL连接的PEM格式证书链文件的路径。
EMAIL_SSL_KEYFILE
¶违约: None
如果 EMAIL_USE_SSL
或 EMAIL_USE_TLS
是 True
,您可以选择指定用于SSL连接的PEM格式私钥文件的路径。
请注意,该设置 EMAIL_SSL_CERTFILE
和 EMAIL_SSL_KEYFILE
不会导致任何证书检查。它们被传递到底层的SSL连接。请参阅Python的文档 ssl.SSLContext.wrap_socket()
函数获取有关如何处理证书链文件和私钥文件的详细信息。
EMAIL_TIMEOUT
¶违约: None
指定阻塞操作(如连接尝试)的超时(以秒为单位)。
FILE_UPLOAD_HANDLERS
¶违约::
[
"django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",
]
用于上载的处理程序列表。更改此设置允许对Django的上载过程进行完全自定义(甚至替换)。
见 文档管理 有关详细信息。
FILE_UPLOAD_MAX_MEMORY_SIZE
¶违约: 2621440
(即2.5 MB)。
上载流到文件系统之前的最大大小(字节)。见 文档管理 有关详细信息。
FILE_UPLOAD_DIRECTORY_PERMISSIONS
¶违约: None
用于在上载文件过程中创建的目录的数值模式。
当使用 collectstatic
管理命令。见 collectstatic
有关覆盖它的详细信息。
该值反映了 FILE_UPLOAD_PERMISSIONS
设置。
FILE_UPLOAD_PERMISSIONS
¶默认: 0o644
数字模式(即 0o644
)将新上载的文件设置为。有关这些模式的更多信息,请参阅文档 os.chmod()
.
如果 None
,您将得到依赖于操作系统的行为。在大多数平台上,临时文件的模式为 0o600
,并且从内存中保存的文件将使用系统的标准ummark保存。
出于安全原因,这些权限不会应用于存储在 FILE_UPLOAD_TEMP_DIR
.
当使用 collectstatic
管理命令。见 collectstatic
有关覆盖它的详细信息。
警告
Always prefix the mode with 0o
.
如果您不熟悉文件模式,请注意 0o
前置码非常重要:它指示一个八进制数,这是指定模式必须的方式。如果您尝试使用 644
,你会得到完全不正确的行为。
FILE_UPLOAD_TEMP_DIR
¶违约: None
存储数据的目录(通常文件大于 FILE_UPLOAD_MAX_MEMORY_SIZE
)上载文件时暂时。如果 None
,django将使用操作系统的标准临时目录。例如,这将默认为 /tmp
在 * 尼克斯式操作系统。
见 文档管理 有关详细信息。
FIRST_DAY_OF_WEEK
¶违约: 0
(星期日)
表示一周中第一天的数字。这在显示日历时特别有用。此值仅在不使用格式国际化或找不到当前区域设置的格式时使用。
该值必须是0到6之间的整数,其中0表示星期日,1表示星期一,依此类推。
FIXTURE_DIRS
¶违约: []
(空表)
搜索的目录列表 fixture 文件,除了 fixtures
每个应用程序的目录,按搜索顺序排列。
请注意,这些路径应该使用Unix样式的正斜杠,即使在Windows上也是如此。
见 使用固定装置提供数据 和 夹具加载 .
FORCE_SCRIPT_NAME
¶违约: None
如果不是 None
,这将用作 SCRIPT_NAME
任何HTTP请求中的环境变量。此设置可用于重写服务器提供的值 SCRIPT_NAME
,它可能是首选值的重写版本,也可能根本不提供。它也被使用 django.setup()
在请求/响应周期之外设置URL解析程序脚本前置(例如,在管理命令和独立脚本中),以生成正确的URL FORCE_SCRIPT_NAME
是提供的。
FORM_RENDERER
¶违约: '
:class:django.forms.renders.djangotemplates'
呈现表单和表单小工具的类。它必须实施 the low-level render API 。包括的表单呈现器包括:
FORMS_URLFIELD_ASSUME_HTTPS
¶自 5.0 版本弃用.
违约: False
将此过渡设置设置为 True
选择使用 "https"
作为新的缺省值 URLField.assume_scheme
在Django 5.x发布周期中。
FORMAT_MODULE_PATH
¶违约: None
包含项目区域设置自定义格式定义的python包的完整python路径。如果没有 None
,Django将检查 formats.py
文件,在名为当前区域设置的目录下,将使用此文件中定义的格式。
包含格式定义的目录的名称预计使用 locale name 例如,符号 de
, pt_BR
, en_US
等
例如,如果 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路径,直到找到一个真正定义给定格式的模块。这意味着在列表中更远的包中定义的格式将优先于更远的包中的相同格式。
可用格式包括:
IGNORABLE_404_URLS
¶违约: []
(空表)
描述通过电子邮件报告HTTP 404错误时应忽略的URL的已编译正则表达式对象列表(请参见 如何管理错误报告 )正则表达式与匹配 request's full paths
(包括查询字符串,如果有的话)。如果您的网站不提供常见的请求文件,如 favicon.ico
或 robots.txt
.
仅在以下情况下使用 BrokenLinkEmailsMiddleware
启用(参见) 中间件 )
INSTALLED_APPS
¶违约: []
(空表)
指定此django安装中启用的所有应用程序的字符串列表。每个字符串都应该是一个点式的python路径:
应用程序配置类(首选),或
包含应用程序的包。
Learn more about application configurations .
使用应用程序注册表进行自省
您的代码不应该访问 INSTALLED_APPS
直接。使用 django.apps.apps
相反。
应用程序名称和标签在 INSTALLED_APPS
应用 names
-应用程序包-的点式python路径必须是唯一的。无法将同一应用程序包含两次,除非用另一个名称复制其代码。
应用 labels
-默认情况下,名称的最后部分-也必须是唯一的。例如,不能同时包含这两者 django.contrib.auth
和 myproject.auth
. 但是,您可以使用定义不同 label
.
不管这些规则是否适用 INSTALLED_APPS
引用应用程序配置类或应用程序包。
当多个应用程序提供同一资源的不同版本(模板、静态文件、管理命令、翻译)时,首先列出的应用程序 INSTALLED_APPS
具有优先权。
INTERNAL_IPS
¶违约: []
(空表)
作为字符串的IP地址列表:
允许 debug()
上下文处理器,用于向模板上下文添加一些变量。
可以使用 admindocs bookmarklets 即使不是以工作人员用户身份登录。
在中标记为“内部”(与“外部”)。 AdminEmailHandler
电子邮件。
LANGUAGE_CODE
¶违约: 'en-us'
表示此安装的语言代码的字符串。这应该是标准的 language ID format . 例如,美国英语是 "en-us"
. 也见 list of language identifiers 和 国际化与本土化 .
它有三个目的:
如果区域设置中间件不在使用中,它将决定向所有用户提供哪个翻译。
如果区域设置中间件处于活动状态,它将提供一种回退语言,以防用户的首选语言无法确定或网站不支持。当用户首选语言的给定文本的翻译不存在时,它还提供回退翻译。
如果通过显式禁用本地化 unlocalize
过滤器或 {% localize off %}
标签时,它提供了将应用的后备本地化格式。看到 controlling localization in templates 了解更多细节。
见 Django如何发现语言偏好 了解更多详细信息。
LANGUAGES
¶默认值:所有可用语言的列表。这个名单在不断增长,其中包括一份副本,不可避免地会迅速过时。您可以通过查看 django/conf/global_settings.py .
该列表是格式为2元组的列表 (language code , language name
)--例如 ('ja', 'Japanese')
。这指定了哪些语言可用于语言选择。看见 国际化与本土化 。
通常,默认值应该足够。仅当要将语言选择限制为Django提供的语言的子集时才设置此设置。
如果定义自定义 LANGUAGES
设置时,可以使用 gettext_lazy()
功能。
以下是示例设置文件:
from django.utils.translation import gettext_lazy as _
LANGUAGES = [
("de", _("German")),
("en", _("English")),
]
LANGUAGES_BIDI
¶默认:从右到左书写的所有语言代码的列表。您可以通过查看查看这些语言的当前列表 django/conf/global_settings.py 。
列表包含 language codes 对于从右向左书写的语言。
通常,默认值应该足够。仅在您想将语言选择限制为Django提供的语言的子集时才设置此设置。如果您定义一个自定义 LANGUAGES
设置时,双向语言列表可能包含指定网站上未启用的语言代码。
LOCALE_PATHS
¶违约: []
(空表)
django查找翻译文件的目录列表。见 Django如何发现翻译 .
例子::
LOCALE_PATHS = [
"/home/www/project/common_files/locale",
"/var/local/translations/locale",
]
Django将在这些路径中查找 <locale_code>/LC_MESSAGES
包含实际翻译文件的目录。
LOGGING
¶默认值:日志配置字典。
包含配置信息的数据结构。如果不为空,则此数据结构的内容将作为参数传递给 LOGGING_CONFIG
。
此外,默认的日志配置在以下情况下将HTTP 500服务器错误传递给电子邮件日志处理程序: DEBUG
是 False
. 也见 配置日志记录 .
您可以通过查看 django/utils/log.py .
LOGGING_CONFIG
¶违约: 'logging.config.dictConfig'
用于在Django项目中配置日志记录的可调用文件的路径。指向python的实例 dictConfig 默认配置方法。
如果你设置 LOGGING_CONFIG
到 None
,将跳过日志配置过程。
MANAGERS
¶违约: []
(空表)
与相同格式的列表 ADMINS
指定当 BrokenLinkEmailsMiddleware
启用。
MEDIA_ROOT
¶违约: ''
(空字符串)
将保存的目录的绝对文件系统路径 user-uploaded files .
例子: "/var/www/example.com/media/"
也见 MEDIA_URL
.
警告
MEDIA_ROOT
和 STATIC_ROOT
必须具有不同的值。以前 STATIC_ROOT
被引进后,依靠或后退是很常见的 MEDIA_ROOT
还要为静态文件提供服务;但是,由于这可能会带来严重的安全隐患,因此需要进行验证检查以防止出现这种情况。
MEDIA_URL
¶违约: ''
(空字符串)
处理媒体的URL MEDIA_ROOT
,用于 managing stored files . 如果设置为非空值,则必须以斜杠结尾。你需要 configure these files to be served 在开发和生产环境中。
如果你想用 {{{{ MEDIA_URL }}}}
在模板中,添加 'django.template.context_processors.media'
在 'context_processors'
选择权 TEMPLATES
.
示例: "https://media.example.com/"
警告
如果您接受来自不受信任用户的上载内容,则存在安全风险!参见安全指南主题 用户上载的内容 有关缓解措施的详细信息。
警告
MEDIA_URL
和 STATIC_URL
必须具有不同的值。见 MEDIA_ROOT
了解更多详细信息。
备注
如果 MEDIA_URL
是相对路径,那么它将以服务器提供的值为开头 SCRIPT_NAME
(或 /
如果未设置)。这使得在子路径中更容易为Django应用程序提供服务,而无需向设置添加额外的配置。
MIDDLEWARE
¶违约: None
要使用的中间件列表。见 中间件 .
MIGRATION_MODULES
¶违约: {{}}
(空字典)
一种字典,指定在每个应用程序上可以找到迁移模块的包。此设置的默认值是空字典,但迁移模块的默认包名称是 migrations
.
例子::
{"blog": "blog.db_migrations"}
在这种情况下,与 blog
应用程序将包含在 blog.db_migrations
包裹。
如果你提供 app_label
论证, makemigrations
如果包不存在,将自动创建该包。
当你供应时 None
作为应用程序的价值,Django将将该应用程序视为无需迁移的应用程序,无论现有的 migrations
子模块。例如,这可以在测试设置文件中使用,以便在测试时跳过迁移(仍将为应用程序的模型创建表)。要在测试期间禁用所有应用程序的迁移,您可以设置 MIGRATE
至 False
而不是.如果 MIGRATION_MODULES
在您的一般项目设置中使用,请记住使用 migrate --run-syncdb
如果您想为应用程序创建表,则可以选择该选项。
MONTH_DAY_FORMAT
¶违约: 'F j'
Django管理更改列表页上的日期字段使用的默认格式——可能是由系统的其他部分使用的格式——在仅显示月和日的情况下。
例如,当django管理员更改列表页被日期向下搜索筛选时,给定日期的标题将显示日期和月份。不同的地区有不同的格式。例如,美国英语会说“1月1日”,而西班牙语会说“1 Enero”。
请注意,相应的区域设置规定的格式具有更高的优先级,将改为应用。
见 allowed date format strings
. 也见 DATE_FORMAT
, DATETIME_FORMAT
, TIME_FORMAT
和 YEAR_MONTH_FORMAT
.
NUMBER_GROUPING
¶违约: 0
在数字的整数部分组合在一起的位数。
常用的是显示千位分隔符。如果此设置为 0
,则不会对数字应用分组。如果此设置大于 0
然后 THOUSAND_SEPARATOR
将用作这些组之间的分隔符。
一些地区使用非统一的数字分组,例如 10,00,00,000
在里面 en_IN
. 对于这种情况,您可以提供一个序列,其中包含要应用的数字组大小的数目。第一个数字定义小数分隔符前面的组的大小,后面的每个数字定义前面组的大小。如果序列以 -1
,不执行进一步分组。如果序列以 0
,最后一个组大小用于数字的其余部分。
示例元组 en_IN
::
NUMBER_GROUPING = (3, 2, 0)
请注意,区域设置规定的格式具有更高的优先级,将改为应用。
也见 DECIMAL_SEPARATOR
, THOUSAND_SEPARATOR
和 USE_THOUSAND_SEPARATOR
.
PREPEND_WWW
¶违约: False
是否在没有“www.”子域的URL前面加上“www.”子域。仅在以下情况下使用 CommonMiddleware
已安装(请参见 中间件 )也见 APPEND_SLASH
.
ROOT_URLCONF
¶默认:未定义
例如,表示根urlconf的完整python导入路径的字符串 "mydjangoapps.urls"
. 可以通过设置属性在每个请求的基础上重写 urlconf
即将到来 HttpRequest
对象。见 Django如何处理请求 有关详细信息。
SECRET_KEY
¶违约: ''
(空字符串)
用于特定Django安装的密钥。这是用来提供 cryptographic signing ,并应设置为唯一的、不可预测的值。
django-admin startproject
自动添加随机生成的 SECRET_KEY
每个新项目。
键的使用不应假设它是文本或字节。每次使用都应该经过 force_str()
或 force_bytes()
将其转换为所需的类型。
如果 SECRET_KEY
未设置。
密钥用于:
所有 sessions 如果您使用的是除 django.contrib.sessions.backends.cache
,或正在使用默认值 get_session_auth_hash()
.
所有 messages 如果您正在使用 CookieStorage
或 FallbackStorage
.
所有 PasswordResetView
令牌。
任何用途 cryptographic signing ,除非提供其他密钥。
当密钥不再设置为 SECRET_KEY
或包含在 SECRET_KEY_FALLBACKS
上述所有条款将作废。在旋转密钥时,您应该将旧密钥移动到 SECRET_KEY_FALLBACKS
暂时的。密钥不用于用户的密码,密钥轮换不会影响用户的密码。
备注
默认值 settings.py
创建的文件 django-admin startproject
创建一个唯一的 SECRET_KEY
为了方便。
SECRET_KEY_FALLBACKS
¶默认: []
特定Django安装的备用密钥列表。它们用于允许旋转 SECRET_KEY
。
为了轮换您的密钥,请设置新的 SECRET_KEY
并将上一个值移动到 SECRET_KEY_FALLBACKS
。然后从 SECRET_KEY_FALLBACKS
当您准备使会话到期时,密码重置令牌等就会利用它们。
备注
签名操作的计算代价很高。中具有多个旧键值 SECRET_KEY_FALLBACKS
将额外的开销添加到与早期密钥不匹配的所有检查。
因此,应在适当的时间段后删除备用值,以允许密钥轮换。
秘密密钥值的使用不应假定它们是文本或字节。每一次使用都应该经过 force_str()
或 force_bytes()
将其转换为所需的类型。
SECURE_CONTENT_TYPE_NOSNIFF
¶违约: True
如果 True
, the SecurityMiddleware
设置 X-Content-Type-Options: nosniff 所有尚未包含的响应的标题。
SECURE_CROSS_ORIGIN_OPENER_POLICY
¶默认: 'same-origin'
除非设置为 None
vt.的. SecurityMiddleware
设置 跨境开放政策 所有尚未将其设置为所提供的值的响应的标头。
SECURE_HSTS_INCLUDE_SUBDOMAINS
¶违约: False
如果 True
, the SecurityMiddleware
添加 includeSubDomains
指示 HTTP严格传输安全 标题。除非 SECURE_HSTS_SECONDS
设置为非零值。
警告
如果设置不正确,则会不可逆转(对于 SECURE_HSTS_SECONDS
)破坏你的网站。阅读 HTTP严格传输安全 先记录。
SECURE_HSTS_PRELOAD
¶违约: False
如果 True
, the SecurityMiddleware
添加 preload
指示 HTTP严格传输安全 标题。除非 SECURE_HSTS_SECONDS
设置为非零值。
SECURE_HSTS_SECONDS
¶违约: 0
如果设置为非零整数值,则 SecurityMiddleware
设置 HTTP严格传输安全 所有尚未包含的响应的标题。
警告
如果设置不正确,会(在一段时间内)不可逆转地破坏您的站点。阅读 HTTP严格传输安全 先记录。
SECURE_PROXY_SSL_HEADER
¶违约: None
表示HTTP头/值组合的元组,表示请求是安全的。这控制请求对象的行为 is_secure()
方法。
默认情况下, is_secure()
确定请求是否安全,方法是确认请求的URL使用 https://
. 此方法对于Django的CSRF保护很重要,它可能被您自己的代码或第三方应用程序使用。
不过,如果您的Django应用程序位于代理后面,那么无论原始请求是否使用HTTPS,代理都可能会“吞噬”。如果代理和Django之间存在非HTTPS连接,那么 is_secure()
总会回来 False
--即使是最终用户通过HTTPS发出的请求。相比之下,如果代理和Django之间存在HTTPS连接,那么 is_secure()
总会回来 True
--即使是最初通过HTTP发出的请求。
在这种情况下,将代理配置为设置一个自定义HTTP头,告诉Django请求是否通过HTTPS传入,然后设置 SECURE_PROXY_SSL_HEADER
所以Django知道要找什么标题。
设置一个包含两个元素的元组——要查找的头的名称和必需的值。例如::
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
这告诉姜戈要相信 X-Forwarded-Proto
标头来自我们的代理,并且在以下情况下保证请求是安全的(即,它最初是通过HTTPS传入的):
标头值为 'https'
,或
其最左侧的初始值为 'https'
在以逗号分隔的协议列表的情况下(例如 'https,http,http'
)。
你应该 only 如果您控制了代理,或者有其他一些保证,可以适当地设置/剥离这个头文件,那么就设置这个设置。
请注意,标题的格式必须与 request.META
--全部大写,可能从 HTTP_
. (记住,Django会自动添加 'HTTP_'
在使标题在 request.META
)
警告
修改此设置可能会损害网站的安全性。在更改设置之前,请确保您完全了解它。
在设置此选项之前,请确保以下所有选项均为真(假定以上示例中的值):
你的django应用程序在代理服务器后面。
您的委托书将 X-Forwarded-Proto
来自所有传入请求的标头,即使它包含逗号分隔的协议列表。换句话说,如果最终用户在其请求中包含该标头,则代理将丢弃该标头。
您的代理设置 X-Forwarded-Proto
头并将其发送到django,但仅限于最初通过https传入的请求。
如果其中任何一个不正确,则应将此设置设置为 None
找到另一种确定HTTPS的方法,可能是通过定制中间件。
SECURE_REDIRECT_EXEMPT
¶违约: []
(空表)
如果URL路径与此列表中的正规表达相匹配,则请求不会被重定向到HTTPS。的 SecurityMiddleware
从URL路径中删除引导斜线,因此模式不应包括它们,例如 SECURE_REDIRECT_EXEMPT = [r'^no-ssl/$', …]
。如果 SECURE_SSL_REDIRECT
是 False
,此设置没有影响。
SECURE_REFERRER_POLICY
¶默认: 'same-origin'
如果已配置, SecurityMiddleware
设置 Referrer策略 所有尚未将其设置为所提供的值的响应的标头。
SECURE_SSL_HOST
¶违约: None
如果字符串(例如 secure.example.com
,所有SSL重定向都将定向到此主机,而不是最初请求的主机(例如 www.example.com
)如果 SECURE_SSL_REDIRECT
是 False
,此设置无效。
SECURE_SSL_REDIRECT
¶违约: False
如果 True
, the SecurityMiddleware
redirects 所有对https的非https请求(与中列出的正则表达式匹配的URL除外) SECURE_REDIRECT_EXEMPT
)
备注
如果把这个转到 True
导致无限重定向,这可能意味着您的站点正在代理服务器后面运行,无法判断哪些请求是安全的,哪些请求不是。您的代理可能会设置一个头来指示安全请求;您可以通过找出该头是什么并配置 SECURE_PROXY_SSL_HEADER
相应设置。
SERIALIZATION_MODULES
¶默认:未定义
包含序列化程序定义(作为字符串提供)的模块字典,由该序列化类型的字符串标识符进行键控。例如,要定义yaml序列化程序,请使用:
SERIALIZATION_MODULES = {"yaml": "path.to.yaml_serializer"}
SERVER_EMAIL
¶违约: 'root@localhost'
错误消息来自的电子邮件地址,例如发送到的地址 ADMINS
和 MANAGERS
.该地址用于 From:
标头,并且可以采用所选电子邮件发送协议中有效的任何格式。
为什么我的电子邮件来自不同的地址?
此地址仅用于错误消息。它是 not 与常规电子邮件一起发送的地址 send_mail()
来自;为此,请参阅 DEFAULT_FROM_EMAIL
.
SHORT_DATE_FORMAT
¶违约: 'm/d/Y'
(例如) 12/31/2003
)
可用于在模板上显示日期字段的可用格式。请注意,相应的区域设置规定的格式具有更高的优先级,将改为应用。看见 allowed date format strings
。
也见 DATE_FORMAT
和 SHORT_DATETIME_FORMAT
.
SHORT_DATETIME_FORMAT
¶违约: 'm/d/Y P'
(例如) 12/31/2003 4 p.m.
)
可用于在模板上显示日期时间字段的可用格式。请注意,相应的区域设置规定的格式具有更高的优先级,将改为应用。看见 allowed date format strings
。
也见 DATE_FORMAT
和 SHORT_DATE_FORMAT
.
SIGNING_BACKEND
¶违约: 'django.core.signing.TimestampSigner'
用于签署cookie和其他数据的后端。
也见 加密签名 文档。
SILENCED_SYSTEM_CHECKS
¶违约: []
(空表)
由系统检查框架(即 ["models.W001"]
)你希望永远承认和忽视。静音检查不会输出到控制台。
也见 系统检查框架 文档。
STORAGES
¶违约::
{
"default": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
},
"staticfiles": {
"BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
},
}
包含要与Django一起使用的所有存储设置的词典。它是一个嵌套词典,其内容将存储别名映射到包含单独存储选项的词典。
存储可以具有您选择的任何别名。但是,有两个别名具有特殊意义:
default
为 managing files 。 '
:class:django.core.files.storage.FileSystemStorage '
是默认存储引擎。
staticfiles
为 managing static files 。 '
:class:django.contrib.staticfiles.storage.StaticFilesStorage '
是默认存储引擎。
下面是一个例子 settings.py
定义自定义文件存储的代码段 example
**
STORAGES = {
# ...
"example": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
"OPTIONS": {
"location": "/example",
"base_url": "/example/",
},
},
}
OPTIONS
被传递给 BACKEND
在中进行初始化时 **kwargs
。
可以从以下位置检索存储后端的现成实例 django.core.files.storage.storages
。使用与中的后端定义对应的键 STORAGES
。
我的值是否与默认值合并?
定义此设置将覆盖缺省值,并且 not 和它合并了。
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'
通过设置,您可以使用不随Django一起提供的模板后端 BACKEND
到完全限定的路径(即 'mypackage.whatever.Backend'
)
NAME
¶默认:见下文
此特定模板引擎的别名。它是一个允许选择渲染引擎的标识符。在所有配置的模板引擎中,别名必须是唯一的。
它默认为定义引擎类的模块的名称,即 BACKEND
,如果没有提供。例如,如果后端 'mypackage.whatever.Backend'
那么它的默认名称是 'whatever'
.
DIRS
¶违约: []
(空表)
引擎应按搜索顺序查找模板源文件的目录。
APP_DIRS
¶违约: False
引擎是否应在已安装的应用程序中查找模板源文件。
备注
默认值 settings.py
创建的文件 django-admin startproject
集合 'APP_DIRS': True
.
OPTIONS
¶违约: {{}}
(空DICT)
传递到模板后端的额外参数。可用参数因模板后端而异。见 DjangoTemplates
和 Jinja2
对于内置后端的选项。
TEST_RUNNER
¶违约: 'django.test.runner.DiscoverRunner'
用于启动测试套件的类的名称。见 使用不同的测试框架 .
TEST_NON_SERIALIZED_APPS
¶违约: []
(空表)
以便在测试之间还原数据库状态 TransactionTestCase
没有事务的S和数据库后端,Django将 serialize the contents of all apps 当它启动测试运行时,这样它就可以在运行需要它的测试之前从该副本重新加载。
这会减慢测试运行程序的启动时间;如果您有不需要此功能的应用程序,可以在此处添加它们的全名(例如 'django.contrib.contenttypes'
)从这个序列化过程中排除它们。
THOUSAND_SEPARATOR
¶违约: ','
(逗号)
设置数字格式时使用的默认千位分隔符。此设置仅在 USE_THOUSAND_SEPARATOR
是 True
和 NUMBER_GROUPING
大于 0
.
请注意,区域设置规定的格式具有更高的优先级,将改为应用。
也见 NUMBER_GROUPING
, DECIMAL_SEPARATOR
和 USE_THOUSAND_SEPARATOR
.
TIME_FORMAT
¶违约: 'P'
(例如) 4 p.m.
)
用于在系统的任何部分显示时间字段的默认格式。请注意,区域设置规定的格式具有更高的优先级,将改为应用。看见 allowed date format strings
。
也见 DATE_FORMAT
和 DATETIME_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
模板筛选器。
区域设置规定的格式具有更高的优先级,将改为应用。
TIME_ZONE
¶违约: 'America/Chicago'
表示此安装的时区的字符串。见 list of time zones .
备注
自从Django和 TIME_ZONE
设置为 'America/Chicago'
,全局设置(如果项目的 settings.py
遗骸 'America/Chicago'
为了向后兼容。新项目模板默认为 'UTC'
.
请注意,这不一定是服务器的时区。例如,一台服务器可以为多个Django供电的站点提供服务,每个站点都有一个单独的时区设置。
什么时候? USE_TZ
是 False
,这是Django将存储所有日期时间的时区。什么时候? USE_TZ
是 True
,这是Django将用于在模板中显示日期时间和解释表单中输入的日期时间的默认时区。
在UNIX环境中(其中 time.tzset()
执行),Django设置 os.environ['TZ']
变量到您在中指定的时区 TIME_ZONE
设置。因此,您的所有视图和模型都将在此时区自动运行。但是,Django不会 TZ
环境变量,如果您使用的是手动配置选项,如中所述 manually configuring settings . 如果Django不设置 TZ
环境变量,由您来确保流程在正确的环境中运行。
备注
Django无法在Windows环境中可靠地使用备用时区。如果你在Windows上运行django, TIME_ZONE
必须设置为与系统时区匹配。
USE_I18N
¶违约: True
一个布尔值,指定是否应启用Django的翻译系统。这提供了一种关闭它的方法以提高性能。如果值是 False
,Django会进行一些优化,以免加载翻译机器。
另请参阅 LANGUAGE_CODE
和 USE_TZ
。
备注
默认值 settings.py
创建的文件 django-admin startproject
包括 USE_I18N = True
为了方便。
USE_THOUSAND_SEPARATOR
¶违约: False
一个布尔值,它指定是否使用千位分隔符显示数字。当设置为时 True
,Django将使用 NUMBER_GROUPING
和 THOUSAND_SEPARATOR
设置。后两个设置也可能由优先的区域设置决定。
也见 DECIMAL_SEPARATOR
, NUMBER_GROUPING
和 THOUSAND_SEPARATOR
.
USE_TZ
¶违约: True
一个布尔值,指定默认情况下日期时间是否具有时区感知能力。如果值是 True
,Django将在内部使用时区感知日期时间。
什么时候 USE_TZ
如果为False,Django将使用本地时间的原始日期时间,除非在解析ISO 8601格式的字符串时,否则时区信息将始终保留(如果存在)。
USE_X_FORWARDED_HOST
¶违约: False
一个布尔值,指定是否使用 X-Forwarded-Host
标题优先于 Host
标题。仅当设置此头的代理正在使用时,才应启用此选项。
此设置优先于 USE_X_FORWARDED_PORT
.每 RFC 7239#section-5.3 vt.的. 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
)会使用。的 django-admin startproject
管理指挥部将制定标准 wsgi.py
文件与 application
可调用,并将此设置指向此设置 application
。
如果未设置,返回值为 django.core.wsgi.get_wsgi_application()
将被使用。在这种情况下, runserver
将与以前的Django版本相同。
YEAR_MONTH_FORMAT
¶违约: 'F Y'
在仅显示年份和月份的情况下,Django管理更改列表页上的日期字段以及系统其他部分可能使用的默认格式。
例如,当django管理更改列表页被日期向下搜索筛选时,给定月份的标题显示月份和年份。不同的地区有不同的格式。例如,美国英语会说“2006年1月”,而另一个地区可能说“2006年1月”。
请注意,相应的区域设置规定的格式具有更高的优先级,将改为应用。
见 allowed date format strings
. 也见 DATE_FORMAT
, DATETIME_FORMAT
, TIME_FORMAT
和 MONTH_DAY_FORMAT
.
X_FRAME_OPTIONS
¶默认: 'DENY'
x-frame-options头的默认值 XFrameOptionsMiddleware
. 见 clickjacking protection 文档。
设置为 django.contrib.auth
.
AUTHENTICATION_BACKENDS
¶违约: ['django.contrib.auth.backends.ModelBackend']
试图对用户进行身份验证时要使用的身份验证后端类(字符串)列表。见 authentication backends documentation 有关详细信息。
AUTH_USER_MODEL
¶违约: 'auth.User'
用于表示用户的模型。见 替换自定义 User 模型 .
警告
在项目的生命周期内(即,一旦您创建并迁移了依赖于它的模型),您就不能不费吹灰之力地更改auth-user-u模型设置。它将在项目开始时设置,并且它所引用的模型必须在它所在的应用程序的第一次迁移中可用。见 替换自定义 User 模型 了解更多详细信息。
LOGIN_REDIRECT_URL
¶违约: '/accounts/profile/'
URL或 named URL pattern 当 LoginView
没有得到 next
获取参数。
LOGIN_URL
¶违约: '/accounts/login/'
URL或 named URL pattern 当使用时,登录请求会被重定向 login_required()
装饰师, LoginRequiredMixin
, AccessMixin
,或何时 LoginRequiredMiddleware
已安装。
LOGOUT_REDIRECT_URL
¶违约: None
URL或 named URL pattern 在注销后重定向请求的位置,如果 LogoutView
没有一个 next_page
属性。
如果 None
,将不执行重定向,并且将呈现注销视图。
PASSWORD_RESET_TIMEOUT
¶默认: 259200
(3天,以秒为单位)
密码重置链接有效的秒数。
使用的 PasswordResetConfirmView
.
备注
减少此超时的值不会对攻击者强行强制密码重置令牌的能力产生任何影响。代币的设计目的是在没有任何超时的情况下免受暴力强迫。
此超时的存在是为了防止一些不太可能的攻击情况,例如某人访问可能包含旧的、未使用的密码重置令牌的电子邮件档案。
PASSWORD_HASHERS
¶见 Django如何存储密码 .
违约::
[
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
"django.contrib.auth.hashers.Argon2PasswordHasher",
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
"django.contrib.auth.hashers.ScryptPasswordHasher",
]
AUTH_PASSWORD_VALIDATORS
¶违约: []
(空表)
用于检查用户密码强度的验证程序列表。见 密码验证 了解更多详细信息。默认情况下,不执行任何验证,并且接受所有密码。
设置为 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的后端-- CookieStorage
和 FallbackStorage
--使用的值 SESSION_COOKIE_DOMAIN
, SESSION_COOKIE_SECURE
和 SESSION_COOKIE_HTTPONLY
设置他们的cookie时。
设置为 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'
见 配置会话引擎 了解更多详细信息。
SESSION_EXPIRE_AT_BROWSER_CLOSE
¶违约: False
是否在用户关闭浏览器时终止会话。见 浏览器长度会话与持久会话 .
SESSION_FILE_PATH
¶违约: None
如果您使用的是基于文件的会话存储,那么这将设置Django将在其中存储会话数据的目录。当默认值 (None
)如果使用,Django将使用系统的标准临时目录。
SESSION_SAVE_EVERY_REQUEST
¶违约: False
是否在每次请求时保存会话数据。如果这是 False
(默认值),则只有在修改会话数据时才会保存会话数据——也就是说,如果已分配或删除了会话数据的任何字典值。即使此设置处于活动状态,也不会创建空会话。
SESSION_SERIALIZER
¶违约: 'django.contrib.sessions.serializers.JSONSerializer'
用于序列化会话数据的序列化程序类的完整导入路径。包括的串行化程序包括:
'django.contrib.sessions.serializers.JSONSerializer'
看见 会话序列化 了解更多细节。
设置为 django.contrib.sites
.
SITE_ID
¶默认:未定义
中当前网站的ID(作为整数) django_site
数据库表。这样,应用程序数据就可以挂接到特定的站点,单个数据库可以管理多个站点的内容。
设置为 django.contrib.staticfiles
.
STATIC_ROOT
¶违约: None
目录的绝对路径,其中 collectstatic
将收集静态文件以进行部署。
例子: "/var/www/example.com/static/"
如果 staticfiles 启用contrib app(与默认项目模板中一样),则 collectstatic
管理命令将静态文件收集到此目录中。了解如何操作 managing static files 有关用法的详细信息。
警告
这应该是一个最初为空的目标目录,用于将静态文件从其永久位置收集到一个目录中,以便于部署;它是 not 永久存储静态文件的位置。您应该在将由 staticfiles 的 finders
默认情况下, 'static/'
应用程序子目录和包含在其中的任何目录 STATICFILES_DIRS
)
STATIC_URL
¶违约: None
引用位于中的静态文件时要使用的URL STATIC_ROOT
.
示例: "static/"
或 "https://static.example.com/"
如果没有 None
,这将用作 asset definitions (the Media
类)和 staticfiles app .
如果设置为非空值,则必须以斜杠结尾。
你可能需要 configure these files to be served in development 一定要这么做 in production .
备注
如果 STATIC_URL
是相对路径,那么它将以服务器提供的值为开头 SCRIPT_NAME
(或 /
如果未设置)。这使得在子路径中更容易为Django应用程序提供服务,而无需向设置添加额外的配置。
STATICFILES_DIRS
¶违约: []
(空表)
此设置定义静态文件应用程序在 FileSystemFinder
已启用查找程序,例如,如果使用 collectstatic
或 findstatic
管理命令或使用静态文件服务视图。
应将其设置为包含指向附加文件目录的完整路径的字符串列表,例如:
STATICFILES_DIRS = [
"/home/special.polls.com/polls/static",
"/home/polls.com/polls/static",
"/opt/webfiles/common",
]
请注意,这些路径应该使用Unix样式的正斜杠,甚至在Windows(例如 "C:/Users/user/mysite/extra_static_content"
)
如果要引用具有附加命名空间的某个位置中的文件,可以 任选地 提供前缀为 (prefix, path)
元组,例如:
STATICFILES_DIRS = [
# ...
("downloads", "/opt/webfiles/stats"),
]
例如,假设您有 STATIC_URL
设置为 'static/'
vt.的. 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_FINDERS
¶违约::
[
"django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
]
知道如何在不同位置查找静态文件的finder后端列表。
默认设置将查找存储在 STATICFILES_DIRS
设置(使用) django.contrib.staticfiles.finders.FileSystemFinder
) static
每个应用程序的子目录(使用 django.contrib.staticfiles.finders.AppDirectoriesFinder
)如果存在多个同名文件,将使用找到的第一个文件。
默认情况下禁用一个查找器: django.contrib.staticfiles.finders.DefaultStorageFinder
。如果添加到您的 STATICFILES_FINDERS
设置时,它将在默认文件存储中查找由 default
按键输入 STORAGES
布景。
备注
在使用 AppDirectoriesFinder
查找器,确保您的应用程序可以通过将应用程序添加到 INSTALLED_APPS
您的网站设置。
静态文件查找器当前被视为私有接口,因此该接口是未记录的。
i18n
''L10n')¶i18n
)¶l10n
)¶安全性
7月 22, 2024