设置

警告

重写设置时要小心,尤其是当默认值为非空列表或字典时,例如 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=FalseAdminEmailHandler 在中配置 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.comwww.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 .

什么时候 DEBUGTrueALLOWED_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_directorypostgresql.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_TZTrue ,则从数据库读取DateTime返回Aware DateTime,如果不是,则将时区设置为该选项的值 None ,或以其他方式发送至UTC。

什么时候? USE_TZFalse ,设置此选项时出错。

  • 如果数据库后台不支持时区(例如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 (postgresqlMySQL (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)表空间。 DATAFILEDATAFILE_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.bodyrequest.POST 并根据总请求大小(不包括任何文件上载数据)进行计算。你可以把这个设置为 None 禁用检查。预期接收异常大表单文章的应用程序应调整此设置。

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

也见 FILE_UPLOAD_MAX_MEMORY_SIZE .

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_FORMATTIME_FORMATSHORT_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_INPUT_FORMATSTIME_INPUT_FORMATS .

DATETIME_FORMAT

违约: 'N j, Y, P' (例如) Feb. 4, 2003, 4 p.m.

用于在系统的任何部分显示日期时间字段的默认格式。请注意,区域设置规定的格式具有更高的优先级,将改为应用。看见 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'
    "%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 在最后的手段。

区域设置规定的格式具有更高的优先级,将改为应用。

也见 DATE_INPUT_FORMATSTIME_INPUT_FORMATS .

DEBUG

违约: False

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

从不将站点部署到生产中 DEBUG 打开。

调试模式的主要功能之一是显示详细的错误页。如果应用程序在以下情况下引发异常: DEBUGTrue ,django将显示详细的回溯,包括许多有关您的环境的元数据,例如当前定义的所有django设置(从 settings.py

作为一项安全措施,Django将 not 包括可能敏感的设置,例如 SECRET_KEY . 具体来说,它将排除名称包含以下任何内容的任何设置:

  • 'API'

  • 'KEY'

  • 'PASS'

  • 'SECRET'

  • 'SIGNATURE'

  • 'TOKEN'

注意这些是 部分的 比赛。 'PASS' 也将匹配密码,就像 'TOKEN' 还将匹配标记化等。

不过,请注意,调试输出中总会有不适合公共使用的部分。文件路径、配置选项等都为攻击者提供了有关服务器的额外信息。

同样重要的是,在运行时 DEBUG 打开后,django将记住它执行的每个SQL查询。这在调试时很有用,但它会快速消耗生产服务器上的内存。

最后,如果 DEBUGFalse ,您还需要正确设置 ALLOWED_HOSTS 设置。如果不这样做,将导致所有请求作为“错误请求(400)”返回。

备注

默认值 settings.py 创建的文件 django-admin startproject 集合 DEBUG = True 为了方便。

DEBUG_PROPAGATE_EXCEPTIONS

违约: False

如果设置为 True ,Django对视图函数的异常处理 (handler500 ,或调试视图(如果 DEBUGTrue )和记录500个回复 (django.request )被跳过,异常向上传播。

这对某些测试设置很有用。除非您希望Web服务器(而不是Django)生成“内部服务器错误”响应,否则不应在活动网站上使用它。在这种情况下,请确保服务器没有在响应中显示堆栈跟踪或其他敏感信息。

DECIMAL_SEPARATOR

违约: '.' (点)

设置小数格式时使用的默认小数分隔符。

请注意,区域设置规定的格式具有更高的优先级,将改为应用。

也见 NUMBER_GROUPINGTHOUSAND_SEPARATORUSE_THOUSAND_SEPARATOR .

DEFAULT_AUTO_FIELD

默认: ' :类:' django.db.models.AutoField ' '

用于不具有字段的模型的默认主关键字字段类型 primary_key=True

迁移通过表自动创建的表

的价值 DEFAULT_AUTO_FIELD 在为多对多关系创建新的自动创建的直通表时将受到尊重。

遗憾的是,迁移框架目前不能更新现有自动创建的直通表的主键。

这意味着如果您将 DEFAULT_AUTO_FIELD 然后生成迁移,相关模型的主键会被更新,直通表中的外键也会更新,但自动创建的直通表的主键不会迁移。

为了解决这个问题,您应该添加一个 RunSQL 操作以执行所需的 ALTER TABLE 一步。您可以通过以下方式检查现有表名 sqlmigratedbshell ,或与现场的 remote_field.through._meta.db_table 财产。

通过模型明确定义的数据已由迁移系统处理。

允许自动迁移已有的自动创建的直通表的主键 may be implemented at a later date

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: 传出电子邮件的标题,可以采用所选电子邮件发送协议中有效的任何格式。

这不会影响发送到的错误消息 ADMINSMANAGERS 。看见 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_adminsdjango.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_SSLEMAIL_USE_TLSTrue ,您可以选择指定用于SSL连接的PEM格式证书链文件的路径。

EMAIL_SSL_KEYFILE

违约: None

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

请注意,该设置 EMAIL_SSL_CERTFILEEMAIL_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)。

上载流到文件系统之前的最大大小(字节)。见 文档管理 有关详细信息。

也见 DATA_UPLOAD_MAX_MEMORY_SIZE .

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 例如,符号 dept_BRen_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.icorobots.txt .

仅在以下情况下使用 BrokenLinkEmailsMiddleware 启用(参见) 中间件

INSTALLED_APPS

违约: [] (空表)

指定此django安装中启用的所有应用程序的字符串列表。每个字符串都应该是一个点式的python路径:

  • 应用程序配置类(首选),或

  • 包含应用程序的包。

Learn more about application configurations .

使用应用程序注册表进行自省

您的代码不应该访问 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 电子邮件。

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 codelanguage 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服务器错误传递给电子邮件日志处理程序: DEBUGFalse . 也见 配置日志记录 .

您可以通过查看 django/utils/log.py .

LOGGING_CONFIG

违约: 'logging.config.dictConfig'

用于在Django项目中配置日志记录的可调用文件的路径。指向python的实例 dictConfig 默认配置方法。

如果你设置 LOGGING_CONFIGNone ,将跳过日志配置过程。

MANAGERS

违约: [] (空表)

与相同格式的列表 ADMINS 指定当 BrokenLinkEmailsMiddleware 启用。

MEDIA_ROOT

违约: '' (空字符串)

将保存的目录的绝对文件系统路径 user-uploaded files .

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

也见 MEDIA_URL .

警告

MEDIA_ROOTSTATIC_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_URLSTATIC_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 子模块。例如,这可以在测试设置文件中使用,以便在测试时跳过迁移(仍将为应用程序的模型创建表)。要在测试期间禁用所有应用程序的迁移,您可以设置 MIGRATEFalse 而不是.如果 MIGRATION_MODULES 在您的一般项目设置中使用,请记住使用 migrate --run-syncdb 如果您想为应用程序创建表,则可以选择该选项。

MONTH_DAY_FORMAT

违约: 'F j'

Django管理更改列表页上的日期字段使用的默认格式——可能是由系统的其他部分使用的格式——在仅显示月和日的情况下。

例如,当django管理员更改列表页被日期向下搜索筛选时,给定日期的标题将显示日期和月份。不同的地区有不同的格式。例如,美国英语会说“1月1日”,而西班牙语会说“1 Enero”。

请注意,相应的区域设置规定的格式具有更高的优先级,将改为应用。

allowed date format strings . 也见 DATE_FORMATDATETIME_FORMATTIME_FORMATYEAR_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_SEPARATORTHOUSAND_SEPARATORUSE_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 未设置。

警告

对这个值保密。

用已知的 SECRET_KEY 破坏了Django的许多安全保护,并可能导致权限升级和远程代码执行漏洞。

密钥用于:

当密钥不再设置为 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_REDIRECTFalse ,此设置没有影响。

SECURE_REFERRER_POLICY

默认: 'same-origin'

如果已配置, SecurityMiddleware 设置 Referrer策略 所有尚未将其设置为所提供的值的响应的标头。

SECURE_SSL_HOST

违约: None

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

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'

错误消息来自的电子邮件地址,例如发送到的地址 ADMINSMANAGERS .该地址用于 From: 标头,并且可以采用所选电子邮件发送协议中有效的任何格式。

为什么我的电子邮件来自不同的地址?

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

SHORT_DATE_FORMAT

违约: 'm/d/Y' (例如) 12/31/2003

可用于在模板上显示日期字段的可用格式。请注意,相应的区域设置规定的格式具有更高的优先级,将改为应用。看见 allowed date format strings

也见 DATE_FORMATSHORT_DATETIME_FORMAT .

SHORT_DATETIME_FORMAT

违约: 'm/d/Y P' (例如) 12/31/2003 4 p.m.

可用于在模板上显示日期时间字段的可用格式。请注意,相应的区域设置规定的格式具有更高的优先级,将改为应用。看见 allowed date format strings

也见 DATE_FORMATSHORT_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一起使用的所有存储设置的词典。它是一个嵌套词典,其内容将存储别名映射到包含单独存储选项的词典。

存储可以具有您选择的任何别名。但是,有两个别名具有特殊意义:

  • defaultmanaging files' :class:django.core.files.storage.FileSystemStorage ' 是默认存储引擎。

  • staticfilesmanaging 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)

传递到模板后端的额外参数。可用参数因模板后端而异。见 DjangoTemplatesJinja2 对于内置后端的选项。

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_SEPARATORTrueNUMBER_GROUPING 大于 0 .

请注意,区域设置规定的格式具有更高的优先级,将改为应用。

也见 NUMBER_GROUPINGDECIMAL_SEPARATORUSE_THOUSAND_SEPARATOR .

TIME_FORMAT

违约: 'P' (例如) 4 p.m.

用于在系统的任何部分显示时间字段的默认格式。请注意,区域设置规定的格式具有更高的优先级,将改为应用。看见 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 模板筛选器。

区域设置规定的格式具有更高的优先级,将改为应用。

也见 DATE_INPUT_FORMATSDATETIME_INPUT_FORMATS .

TIME_ZONE

违约: 'America/Chicago'

表示此安装的时区的字符串。见 list of time zones .

备注

自从Django和 TIME_ZONE 设置为 'America/Chicago' ,全局设置(如果项目的 settings.py 遗骸 'America/Chicago' 为了向后兼容。新项目模板默认为 'UTC' .

请注意,这不一定是服务器的时区。例如,一台服务器可以为多个Django供电的站点提供服务,每个站点都有一个单独的时区设置。

什么时候? USE_TZFalse ,这是Django将存储所有日期时间的时区。什么时候? USE_TZTrue ,这是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_CODEUSE_TZ

备注

默认值 settings.py 创建的文件 django-admin startproject 包括 USE_I18N = True 为了方便。

USE_THOUSAND_SEPARATOR

违约: False

一个布尔值,它指定是否使用千位分隔符显示数字。当设置为时 True ,Django将使用 NUMBER_GROUPINGTHOUSAND_SEPARATOR 设置。后两个设置也可能由优先的区域设置决定。

也见 DECIMAL_SEPARATORNUMBER_GROUPINGTHOUSAND_SEPARATOR .

USE_TZ

违约: True

一个布尔值,指定默认情况下日期时间是否具有时区感知能力。如果值是 True ,Django将在内部使用时区感知日期时间。

什么时候 USE_TZ 如果为False,Django将使用本地时间的原始日期时间,除非在解析ISO 8601格式的字符串时,否则时区信息将始终保留(如果存在)。

另请参阅 TIME_ZONEUSE_I18N

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_FORMATDATETIME_FORMATTIME_FORMATMONTH_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 patternLoginView 没有得到 next 获取参数。

LOGIN_URL

违约: '/accounts/login/'

URL或 named URL pattern 当使用时,登录请求会被重定向 login_required() 装饰师, LoginRequiredMixinAccessMixin ,或何时 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的后端-- CookieStorageFallbackStorage --使用的值 SESSION_COOKIE_DOMAINSESSION_COOKIE_SECURESESSION_COOKIE_HTTPONLY 设置他们的cookie时。

MESSAGE_TAGS

违约::

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

这将设置消息级别到消息标记的映射,消息标记通常在HTML中呈现为CSS类。如果指定一个值,它将扩展默认值。这意味着您只需指定需要重写的那些值。见 显示消息 更多详细信息。

避免循环进口

如果你重写 MESSAGE_TAGS 在设置文件中并依赖于任何内置常量,必须导入 constants 模块直接避免循环导入的可能性,例如:

from django.contrib.messages import constants as message_constants

MESSAGE_TAGS = {message_constants.INFO: ""}

如果需要,可以直接根据上面的值为常量指定数值。 constants table .

会议

设置为 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 永久存储静态文件的位置。您应该在将由 staticfilesfinders 默认情况下, '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 已启用查找程序,例如,如果使用 collectstaticfindstatic 管理命令或使用静态文件服务视图。

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

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.FileSystemFinderstatic 每个应用程序的子目录(使用 django.contrib.staticfiles.finders.AppDirectoriesFinder )如果存在多个同名文件,将使用找到的第一个文件。

默认情况下禁用一个查找器: django.contrib.staticfiles.finders.DefaultStorageFinder 。如果添加到您的 STATICFILES_FINDERS 设置时,它将在默认文件存储中查找由 default 按键输入 STORAGES 布景。

备注

在使用 AppDirectoriesFinder 查找器,确保您的应用程序可以通过将应用程序添加到 INSTALLED_APPS 您的网站设置。

静态文件查找器当前被视为私有接口,因此该接口是未记录的。

核心设置主题索引

隐藏物

数据库

调试

电子邮件

错误报告

文件上传

形式

全球化 (i18n ''L10n')

国际化 (i18n )

本土化 (l10n )

HTTP

登录

模型

安全性

串行化

模板

测试

URLs