Skip to main content

设置

警告

在覆盖设置时要小心,尤其是当默认值是非空列表或字典(如 MIDDLEWARE_CLASSESSTATICFILES_FINDERS)时。确保您保留Django的功能所需的组件,您希望使用。

核心设置

下面是Django core中可用的设置列表及其默认值。下面列出了contrib应用程序提供的设置,其次是核心设置的主题索引。有关介绍材料,请参阅 设置主题指南

ABSOLUTE_URL_OVERRIDES

默认值:{} (空字典)

对应的字典 "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 发送电子邮件。有关详细信息,请参阅 报告错误

ALLOWED_HOSTS

默认值:[] (空列表)

代表此Django网站可以提供的主机/域名的字符串列表。这是一种防止 HTTP主机头攻击 的安全措施,即使在许多看似安全的Web服务器配置下也是如此。

此列表中的值可以是完全限定名(例如 'www.example.com'),在这种情况下,它们将与请求的 Host 头完全匹配(不区分大小写,不包括端口)。以句点开头的值可用作子域通配符:'.example.com' 将匹配 example.comwww.example.comexample.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]'] 进行验证。

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

Changed in Django 1.10.3:

在旧版本中,ALLOWED_HOSTS 未检查 DEBUG=True。 Django 1.9.11和1.8.16也改变了这一点,以防止DNS重绑定攻击。

APPEND_SLASH

默认值:True

当设置为 True 时,如果请求URL与URLconf中的任何模式不匹配,并且不是以斜杠结尾,则会将HTTP重定向发送到添加了斜杠的同一URL。请注意,重定向可能会导致在POST请求中提交的任何数据丢失。

仅当安装了 CommonMiddleware 时才使用 APPEND_SLASH 设置(请参阅 中间件)。参见 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])

您可以使用任何所需的键功能,只要它具有相同的参数签名。

有关详细信息,请参阅 缓存文档

KEY_PREFIX

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

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

有关详细信息,请参阅 缓存文档

LOCATION

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

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

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

OPTIONS

默认值:None

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

关于可用参数的一些信息可以在 缓存参数 文档中找到。有关更多信息,请参阅后端模块自己的文档。

TIMEOUT

默认值:300

高速缓存条目被视为失效之前的秒数。如果此设置的值为 None,则缓存条目不会过期。

VERSION

默认值:1

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

有关详细信息,请参阅 缓存文档

CACHE_MIDDLEWARE_ALIAS

默认值:default

用于 高速缓存中间件 的高速缓存连接。

CACHE_MIDDLEWARE_KEY_PREFIX

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

一个字符串,它将作为由 高速缓存中间件 生成的缓存键的前缀。此前缀与 KEY_PREFIX 设置组合;它不替代它。

Django缓存框架

CACHE_MIDDLEWARE_SECONDS

默认值:600

缓存 高速缓存中间件 页面的默认秒数。

Django缓存框架

CSRF_FAILURE_VIEW

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

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

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

其中 reason 是指示请求被拒绝的原因的短消息(意图用于开发者或记录,而不是最终用户)。它应该返回 HttpResponseForbidden

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

Changed in Django 1.10:

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

CSRF_HEADER_NAME

New in Django 1.9.

默认值:'HTTP_X_CSRFTOKEN'

用于CSRF身份验证的请求标头的名称。

request.META 中的其他HTTP头一样,从服务器接收的头名称通过将所有字符转换为大写,将任何连字符替换为下划线,并向名称添加 'HTTP_' 前缀来规范化。例如,如果您的客户端发送 'X-XSRF-TOKEN' 头,则设置应为 'HTTP_X_XSRF_TOKEN'

CSRF_TRUSTED_ORIGINS

New in Django 1.9.

默认值:[] (空列表)

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

DATABASES

默认值:{} (空字典)

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

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

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

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

当连接到其他数据库后端(如MySQL,Oracle或PostgreSQL)时,将需要其他连接参数。有关如何指定其他数据库类型,请参阅下面的 ENGINE 设置。这个例子是PostgreSQL:

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

可用于更复杂配置可能需要以下内部选项:

ATOMIC_REQUESTS

默认值:False

将此设置为 True 以在此数据库的事务中包装每个视图。见 将事务绑定到HTTP请求

AUTOCOMMIT

默认值:True

如果你想要 禁用Django的事务管理 并实现自己的,设置为 False

ENGINE

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

数据库后端使用。内置数据库后端是:

  • 'django.db.backends.postgresql'

  • 'django.db.backends.mysql'

  • 'django.db.backends.sqlite3'

  • 'django.db.backends.oracle'

您可以通过将 ENGINE 设置为完全限定路径(即 mypackage.backends.whatever)来使用未随Django提供的数据库后端。

Changed in Django 1.9:

在旧版本中,django.db.backends.postgresql 后端被命名为 django.db.backends.postgresql_psycopg2。为了向后兼容,旧名称在较新版本中仍然有效。

HOST

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

连接到数据库时使用的主机。空字符串表示localhost。不与SQLite一起使用。

如果此值以正斜杠('/')开头,并且您使用MySQL,MySQL将通过Unix套接字连接到指定的套接字。例如:

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

如果您使用MySQL,并且此值 doesn’t 以正斜杠开头,则此值假定为主机。

如果使用PostgreSQL,默认情况下(空 HOST),到数据库的连接是通过UNIX域套接字(pg_hba.conf 中的’本地’行)完成的。如果您的UNIX域套接字不在标准位置,请使用与 postgresql.conf 相同的 unix_socket_directory 值。如果要通过TCP套接字连接,请将 HOST 设置为“localhost”或“127.0.0.1”(pg_hba.conf 中的“主机”行)。在Windows上,应始终定义 HOST,因为UNIX域套接字不可用。

NAME

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

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

CONN_MAX_AGE

默认值:0

数据库连接的生存期(以秒为单位)。使用 0 在每个请求结束时关闭数据库连接 - Django的历史行为 - 和 None 用于无限持续连接。

OPTIONS

默认值:{} (空字典)

连接到数据库时使用的额外参数。可用参数因数据库后端而异。

关于可用参数的一些信息可以在 数据库后端 文档中找到。有关更多信息,请参阅后端模块自己的文档。

PASSWORD

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

连接到数据库时使用的密码。不与SQLite一起使用。

PORT

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

连接到数据库时要使用的端口。空字符串表示默认端口。不与SQLite一起使用。

TIME_ZONE

New in Django 1.9.

默认值:None

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

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

设置此选项需要安装 pytz

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

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

Changed in Django 1.9:

在Django 1.9之前,PostgreSQL数据库后端接受了一个未记录的 TIME_ZONE 选项,这会导致数据损坏。

USE_TZFalse 时,设置此选项时出错。

USER

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

连接到数据库时使用的用户名。不与SQLite一起使用。

TEST

默认值:{} (空字典)

测试数据库的设置字典;有关测试数据库的创建和使用的更多详细信息,请参阅 测试数据库

这里有一个测试数据库配置的例子:

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

TEST 字典中的以下键可用:

CHARSET

默认值:None

用于创建测试数据库的字符集编码。此字符串的值直接传递到数据库,因此其格式是后端特定的。

PostgreSQLpostgresql)和 MySQLmysql)后端支持。

COLLATION

默认值:None

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

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

DEPENDENCIES

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

数据库的创建顺序依赖性。有关详细信息,请参阅有关 控制测试数据库的创建顺序 的文档。

MIRROR

默认值:None

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

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

NAME

默认值:None

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

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

测试数据库

SERIALIZE

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

CREATE_DB

默认值:True

这是Oracle特定的设置。

如果它设置为 False,测试表空间将不会在测试开始时自动创建或在结束时删除。

CREATE_USER

默认值:True

这是Oracle特定的设置。

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

USER

默认值:None

这是Oracle特定的设置。

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

PASSWORD

默认值:None

这是Oracle特定的设置。

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

Changed in Django 1.10.3:

旧版本使用硬编码的默认密码。这也在1.9.11和1.8.16中改变,以修复可能的安全隐患。

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增长到的最大大小。

DATAFILE_TMP_MAXSIZE

默认值:'500M'

这是Oracle特定的设置。

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

DATA_UPLOAD_MAX_MEMORY_SIZE

New in Django 1.10.

默认值:2621440 (即2.5 MB)。

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

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

参见 FILE_UPLOAD_MAX_MEMORY_SIZE

DATA_UPLOAD_MAX_NUMBER_FIELDS

New in Django 1.10.

默认值:1000

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

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

DATABASE_ROUTERS

默认值:[] (空列表)

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

请参阅有关 多数据库配置中的自动数据库路由 的文档。

DATE_FORMAT

默认值:'N j, Y' (例如 Feb. 4, 2003

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

参见 DATETIME_FORMATTIME_FORMATSHORT_DATE_FORMAT

DATE_INPUT_FORMATS

默认:

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

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

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

参见 DATETIME_INPUT_FORMATSTIME_INPUT_FORMATS

DATETIME_FORMAT

默认值:'N j, Y, P' (例如 Feb. 4, 2003, 4 p.m.

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

参见 DATE_FORMATTIME_FORMATSHORT_DATETIME_FORMAT

DATETIME_INPUT_FORMATS

默认:

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

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

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

参见 DATE_INPUT_FORMATSTIME_INPUT_FORMATS

DEBUG

默认值:False

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

切勿在启用 DEBUG 的情况下将站点部署到生产环境中。

你抓住了吗?切勿在启用 DEBUG 的情况下将站点部署到生产环境中。

调试模式的一个主要功能是显示详细的错误页面。如果您的应用程序在 DEBUGTrue 时引发异常,Django将显示详细的追溯,包括大量关于您的环境的元数据,例如所有当前定义的Django设置(来自 settings.py)。

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

  • 'API'

  • 'KEY'

  • 'PASS'

  • 'SECRET'

  • 'SIGNATURE'

  • 'TOKEN'

注意这些是 partial 匹配。 'PASS' 也将匹配PASSWORD,正如 'TOKEN' 也将匹配TOKENIZED等。

仍然,请注意,总是会有您的调试输出的部分不适合公共消费。文件路径,配置选项等都为攻击者提供有关您的服务器的额外信息。

还有一点很重要,要记住当使用 DEBUG 运行时,Django会记住它执行的每个SQL查询。这在调试时很有用,但会迅速消耗生产服务器上的内存。

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

注解

为方便起见,django-admin startproject 创建的默认 settings.py 文件设置 DEBUG = True

DEBUG_PROPAGATE_EXCEPTIONS

默认值:False

如果设置为True,Django的视图函数的正常异常处理将被抑制,异常将向上传播。这对于一些测试设置很有用,不应该在活动的网站上使用。

DECIMAL_SEPARATOR

默认值:'.' (点)

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

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

参见 NUMBER_GROUPINGTHOUSAND_SEPARATORUSE_THOUSAND_SEPARATOR

DEFAULT_CHARSET

默认值:'utf-8'

用于所有 HttpResponse 对象的缺省字符集(如果未手动指定MIME类型)。与 DEFAULT_CONTENT_TYPE 一起使用以构造 Content-Type 头部。

DEFAULT_CONTENT_TYPE

默认值:'text/html'

用于所有 HttpResponse 对象的默认内容类型(如果未手动指定MIME类型)。与 DEFAULT_CHARSET 一起使用以构造 Content-Type 头部。

DEFAULT_EXCEPTION_REPORTER_FILTER

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

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

DEFAULT_FILE_STORAGE

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

用于未指定特定存储系统的任何文件相关操作的默认文件存储类。见 管理文件

DEFAULT_FROM_EMAIL

默认值:'webmaster@localhost'

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

DEFAULT_INDEX_TABLESPACE

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

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

DEFAULT_TABLESPACE

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

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

DISALLOWED_USER_AGENTS

默认值:[] (空列表)

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

EMAIL_BACKEND

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

用于发送电子邮件的后端。有关可用后端的列表,请参阅 正在发送电子邮件

EMAIL_FILE_PATH

默认值:未定义

file 电子邮件后端用于存储输出文件的目录。

EMAIL_HOST

默认值:'localhost'

用于发送电子邮件的主机。

参见 EMAIL_PORT

EMAIL_HOST_PASSWORD

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

用于在 EMAIL_HOST 中定义的SMTP服务器的密码。此设置在对SMTP服务器进行身份验证时与 EMAIL_HOST_USER 结合使用。如果这些设置为空,Django将不会尝试身份验证。

参见 EMAIL_HOST_USER

EMAIL_HOST_USER

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

用于在 EMAIL_HOST 中定义的SMTP服务器的用户名。如果为空,Django将不会尝试身份验证。

参见 EMAIL_HOST_PASSWORD

EMAIL_PORT

默认值:25

用于在 EMAIL_HOST 中定义的SMTP服务器的端口。

EMAIL_SUBJECT_PREFIX

默认值:'[Django] '

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

EMAIL_USE_TLS

默认值:False

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

EMAIL_USE_SSL

默认值:False

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

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

EMAIL_SSL_CERTFILE

默认值:None

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

EMAIL_SSL_KEYFILE

默认值:None

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

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

EMAIL_TIMEOUT

默认值:None

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

FILE_CHARSET

默认值:'utf-8'

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

FILE_UPLOAD_HANDLERS

默认:

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

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

有关详细信息,请参阅 管理文件

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

默认值: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将为操作系统使用标准临时目录。例如,在* nix风格的操作系统上,这将默认为 /tmp

有关详细信息,请参阅 管理文件

FIRST_DAY_OF_WEEK

默认值:0 (星期日)

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

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

FIXTURE_DIRS

默认值:[] (空列表)

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

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

用夹具提供初始数据夹具装载

FORCE_SCRIPT_NAME

默认值:None

如果不是 None,这将用作任何HTTP请求中的 SCRIPT_NAME 环境变量的值。此设置可用于覆盖服务器提供的 SCRIPT_NAME 值,该值可能是首选值的重写版本,或者根本不提供。它还被 django.setup() 用于在请求/响应周期之外设置URL解析器脚本前缀(例如,在管理命令和独立脚本中),以在 SCRIPT_NAME 不是 / 时生成正确的URL。

Changed in Django 1.10:

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

FORMAT_MODULE_PATH

默认值:None

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

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

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

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

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

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

可用的形式有 DATE_FORMATTIME_FORMATDATETIME_FORMATYEAR_MONTH_FORMATMONTH_DAY_FORMATSHORT_DATE_FORMATSHORT_DATETIME_FORMATFIRST_DAY_OF_WEEKDECIMAL_SEPARATORTHOUSAND_SEPARATORNUMBER_GROUPING

IGNORABLE_404_URLS

默认值:[] (空列表)

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

仅当启用 BrokenLinkEmailsMiddleware 时才使用此选项(请参阅 中间件)。

INSTALLED_APPS

默认值:[] (空列表)

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

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

  • 包含应用程序的包。

详细了解应用程序配置

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

你的代码不应该直接访问 INSTALLED_APPS。使用 django.apps.apps

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

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

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

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

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

INTERNAL_IPS

默认值:[] (空列表)

IP地址列表,作为字符串,表示:

  • 允许 debug() 上下文处理器向模板上下文添加一些变量。

  • 即使没有作为员工用户登录,也可以使用 admindocs书签

  • AdminEmailHandler 电子邮件中标记为“内部”(与“EXTERNAL”相对)。

LANGUAGE_CODE

默认值:'en-us'

表示此安装的语言代码的字符串。这应该在标准 语言ID格式 中。例如,美国英语是 "en-us"。也参见 list of language identifiers国际化和本地化

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

它有两个目的:

  • 如果区域中间件未使用,它会决定向所有用户提供哪个翻译。

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

有关详细信息,请参阅 Django如何发现语言偏好

LANGUAGES

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

该列表是格式(language codelanguage name)中的两元组列表,例如,('ja', 'Japanese')。这指定了哪些语言可用于语言选择。见 国际化和本地化

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

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

这里有一个示例设置文件:

from django.utils.translation import ugettext_lazy as _

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

LOCALE_PATHS

默认值:[] (空列表)

Django查找翻译文件的目录列表。见 Django如何发现翻译

例:

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

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

LOGGING

默认值:日志配置字典。

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

除此之外,当 DEBUGFalse 时,默认日志配置将HTTP 500服务器错误传递到电子邮件日志处理程序。参见 配置日志记录

您可以通过查看 django/utils/log.py (或查看 online source)来查看默认日志配置。

LOGGING_CONFIG

默认值:'logging.config.dictConfig'

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

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

MANAGERS

默认值:[] (空列表)

ADMINS 格式相同的列表,指定在启用 BrokenLinkEmailsMiddleware 时谁应该获取损坏的链接通知。

MEDIA_ROOT

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

将保存 用户上传的文件 的目录的绝对文件系统路径。

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

参见 MEDIA_URL

警告

MEDIA_ROOTSTATIC_ROOT 必须具有不同的值。在 STATIC_ROOT 被引入之前,通常依赖或回退 MEDIA_ROOT 也提供静态文件;然而,由于这可能有严重的安全隐患,有一个验证检查以防止它。

MEDIA_URL

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

处理从 MEDIA_ROOT 提供的媒体的URL,用于 管理存储的文件。如果设置为非空值,它必须以斜杠结尾。在开发和生产环境中都需要 配置要提供的这些文件

如果要在模板中使用 {{ MEDIA_URL }},请在 TEMPLATES'context_processors' 选项中添加 'django.template.context_processors.media'

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

警告

如果您接受来自不受信任的用户的上传内容,则存在安全风险!有关缓解详细信息,请参阅安全指南的 用户上传的内容 主题。

警告

MEDIA_URLSTATIC_URL 必须具有不同的值。有关详细信息,请参阅 MEDIA_ROOT

MIDDLEWARE

New in Django 1.10.

默认:: None

要使用的中间件列表。见 中间件

MIDDLEWARE_CLASSES

1.10 版后已移除: 使用 settings.MIDDLEWARE_CLASSES 的旧样式中间件已弃用。 适应旧的,自定义中间件 并使用 MIDDLEWARE 设置。

默认:

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

要使用的中间件类的列表。这是Django 1.9及更早版本中使用的默认设置。 Django 1.10介绍了一种新风格的中间件。如果您有一个较旧的项目使用此设置,您应该 更新你自己写的任何中间件 到新的样式,然后使用 MIDDLEWARE 设置。

MIGRATION_MODULES

默认值:{} (空字典)

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

例:

{'blog': 'blog.db_migrations'}

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

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

New in Django 1.9.

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

MONTH_DAY_FORMAT

默认值:'F j'

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

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

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

allowed date format strings。也参见 DATE_FORMATDATETIME_FORMATTIME_FORMATYEAR_MONTH_FORMAT

NUMBER_GROUPING

默认值:0

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

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

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

参见 DECIMAL_SEPARATORTHOUSAND_SEPARATORUSE_THOUSAND_SEPARATOR

PREPEND_WWW

默认值:False

是否添加“www”。子域名到没有它的网址。这仅在安装了 CommonMiddleware 时使用(请参阅 中间件)。参见 APPEND_SLASH

ROOT_URLCONF

默认值:未定义

表示根URLconf的完整Python导入路径的字符串。例如:"mydjangoapps.urls"。可以通过在传入的 HttpRequest 对象上设置属性 urlconf,在每个请求的基础上重写。详情请参阅 Django如何处理请求

SECRET_KEY

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

特定Django安装的密钥。这用于提供 加密签名,并且应该设置为唯一的,不可预测的值。

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

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

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

警告

保持此值为机密。

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

密钥用于:

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

注解

为方便起见,django-admin startproject 创建的默认 settings.py 文件会创建一个唯一的 SECRET_KEY

SECURE_BROWSER_XSS_FILTER

默认值:False

如果 TrueSecurityMiddleware 在没有它的所有响应上设置 X-XSS-Protection: 1; mode=block 头。

SECURE_CONTENT_TYPE_NOSNIFF

默认值:False

如果 TrueSecurityMiddleware 在没有它的所有响应上设置 X-Content-Type-Options: nosniff 头。

SECURE_HSTS_INCLUDE_SUBDOMAINS

默认值:False

如果是 TrueSecurityMiddlewareincludeSubDomains 指令添加到 HTTP严格传输安全 头。除非 SECURE_HSTS_SECONDS 设置为非零值,否则它没有效果。

警告

设置不正确可能会不可逆地(对于 SECURE_HSTS_SECONDS 的值)中断您的网站。首先阅读 HTTP严格传输安全 文档。

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进行的请求。

在这种情况下,您需要配置代理以设置自定义HTTP标头,通知Django请求是否通过HTTPS传入,您将需要设置 SECURE_PROXY_SSL_HEADER,以便Django知道要查找的标头。

您需要设置一个包含两个元素的元组 - 要查找的标题的名称和必需的值。例如:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

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

请注意,标题需要采用 request.META 使用的格式 - 所有大写,可能从 HTTP_ 开始。 (请记住,在 request.META 中提供头之前,Django会自动将 'HTTP_' 添加到x-header名称的开头。)

警告

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

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

  • 你的Django应用程序在代理后面。

  • 您的代理会从所有传入的请求中删除 X-Forwarded-Proto 标头。换句话说,如果最终用户在其请求中包括该头部,代理将丢弃它。

  • 您的代理设置 X-Forwarded-Proto 头并将其发送到Django,但仅适用于最初通过HTTPS进入的请求。

如果任何一个不是真的,你应该保持此设置设置为 None,并找到另一种方法确定HTTPS,可能通过自定义中间件。

SECURE_REDIRECT_EXEMPT

默认值:[] (空列表)

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

SECURE_SSL_HOST

默认值:None

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

SECURE_SSL_REDIRECT

默认值:False

如果 TrueSecurityMiddleware 重定向 所有非HTTPS请求到HTTPS(除了那些与 SECURE_REDIRECT_EXEMPT 中列出的正则表达式匹配的URL)。

注解

如果将其转换为 True 会导致无限重定向,这可能意味着您的网站运行在代理后面,无法分辨哪些请求是安全的,哪些不是。您的代理可能设置标头以指示安全请求;您可以通过找出该标题并相应地配置 SECURE_PROXY_SSL_HEADER 设置来更正该问题。

SERIALIZATION_MODULES

默认值:未定义

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

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

SERVER_EMAIL

默认值:'root@localhost'

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

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

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

SHORT_DATE_FORMAT

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

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

参见 DATE_FORMATSHORT_DATETIME_FORMAT

SHORT_DATETIME_FORMAT

默认值:'m/d/Y P' (例如 12/31/2003 4 p.m.

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

参见 DATE_FORMATSHORT_DATE_FORMAT

SIGNING_BACKEND

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

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

另见 密码签名 文档。

SILENCED_SYSTEM_CHECKS

默认值:[] (空列表)

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

Changed in Django 1.9:

在旧版本中,将 ERROR 级别或更高级别的静音消息打印到控制台。

另见 系统检查框架 文档。

TEMPLATES

默认值:[] (空列表)

包含要与Django一起使用的所有模板引擎的设置的列表。列表的每个项目是包含单个引擎的选项的字典。

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

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

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

BACKEND

默认值:未定义

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

  • 'django.template.backends.django.DjangoTemplates'

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

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

NAME

默认值:见下面

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

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

DIRS

默认值:[] (空列表)

目录,引擎应该按照搜索顺序查找模板源文件。

APP_DIRS

默认值:False

引擎是否应该在已安装的应用程序中查找模板源文件。

注解

django-admin startproject 创建的默认 settings.py 文件设置 'APP_DIRS': True

OPTIONS

默认值:{} (空字典)

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

TEST_RUNNER

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

用于启动测试套件的类的名称。见 使用不同的测试框架

TEST_NON_SERIALIZED_APPS

默认值:[] (空列表)

为了恢复 TransactionTestCase 的测试和没有事务的数据库后端之间的数据库状态,Django将在启动测试运行时 序列化所有应用程序的内容,以便在运行需要它的测试之前从该副本重新加载。

这减慢了测试运行器的启动时间;如果您拥有不需要此功能的应用,则可以在此处添加他们的全名(例如 'django.contrib.contenttypes'),以将其排除在此序列化过程之外。

THOUSAND_SEPARATOR

默认值:',' (逗号)

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

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

参见 NUMBER_GROUPINGDECIMAL_SEPARATORUSE_THOUSAND_SEPARATOR

TIME_FORMAT

默认值:'P' (例如 4 p.m.

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

参见 DATE_FORMATDATETIME_FORMAT

TIME_INPUT_FORMATS

默认:

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

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

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

参见 DATE_INPUT_FORMATSDATETIME_INPUT_FORMATS

TIME_ZONE

默认值:'America/Chicago'

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

注解

由于Django首次发布时将 TIME_ZONE 设置为 'America/Chicago',全局设置(如果项目的 settings.py 中未定义任何内容,则使用该属性)仍保持 'America/Chicago' 以实现向后兼容性。新项目模板默认为 'UTC'

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

USE_TZFalse 时,这是Django将存储所有数据时间的时区。当 USE_TZTrue 时,这是Django用于在模板中显示数据时间和解释在表单中输入的数据时间的默认时区。

Django将 os.environ['TZ'] 变量设置为您在 TIME_ZONE 设置中指定的时区。因此,您的所有视图和模型将在此时区自动运行。但是,Django不会在以下条件下设置 TZ 环境变量:

  • 如果您使用 手动配置设置 中所述的手动配置选项,或

  • 如果指定 TIME_ZONE = None。这将导致Django回退到使用系统时区。然而,当 USE_TZ = True 不鼓励时,因为它使本地时间和UTC之间的转换不可靠。

如果Django没有设置 TZ 环境变量,那么由您来确保您的进程在正确的环境中运行。

注解

Django在Windows环境中不能可靠地使用备用时区。如果您在Windows上运行Django,则必须将 TIME_ZONE 设置为与系统时区匹配。

USE_ETAGS

默认值:False

一个布尔值,指定是否输出 ETag 头。这会节省带宽,但会降低性能。这由 CommonMiddleware缓存框架 使用。

USE_I18N

默认值:True

一个布尔值,指定是否应启用Django的翻译系统。这提供了一个简单的方法来关闭它,性能。如果这被设置为 False,Django将做一些优化,以便不加载翻译机制。

参见 LANGUAGE_CODEUSE_L10NUSE_TZ

注解

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

USE_L10N

默认值:False

一个布尔值,指定是否默认启用数据的本地化格式。如果这被设置为 True, Django将使用当前语言环境的格式显示数字和日期。

参见 LANGUAGE_CODEUSE_I18NUSE_TZ

注解

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

USE_THOUSAND_SEPARATOR

默认值:False

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

参见 DECIMAL_SEPARATORNUMBER_GROUPINGTHOUSAND_SEPARATOR

USE_TZ

默认值:False

一个布尔值,指定数据时间是否将是时区感知的默认或不。如果这被设置为 True,Django将在内部使用时区感知的数据时间。否则,Django将在本地时间使用天真的数据时间。

参见 TIME_ZONEUSE_I18NUSE_L10N

注解

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

USE_X_FORWARDED_HOST

默认值:False

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

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

USE_X_FORWARDED_PORT

New in Django 1.9.

默认值:False

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

USE_X_FORWARDED_HOST 优先于此设置。

WSGI_APPLICATION

默认值:None

Django的内置服务器(例如 runserver)将使用的WSGI应用程序对象的完整Python路径。 django-admin startproject 管理命令将创建一个带有 application 可调用的简单 wsgi.py 文件,并将此设置指向该 application

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

YEAR_MONTH_FORMAT

默认值:'F Y'

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

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

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

allowed date format strings。也参见 DATE_FORMATDATETIME_FORMATTIME_FORMATMONTH_DAY_FORMAT

X_FRAME_OPTIONS

默认值:'SAMEORIGIN'

XFrameOptionsMiddleware 使用的X-Frame-Options标头的默认值。请参阅 点击劫持保护 文档。

Auth

django.contrib.auth 的设置。

AUTHENTICATION_BACKENDS

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

尝试验证用户时要使用的身份验证后端类(作为字符串)的列表。有关详细信息,请参阅 认证后端文档

AUTH_USER_MODEL

默认值:'auth.User'

用于表示用户的模型。见 替换自定义 User 模型

警告

在项目生命周期内(即一旦完成并迁移了依赖于它的模型),您不能在不进行严重的努力的情况下更改AUTH_USER_MODEL设置。它旨在在项目开始时设置,并且其引用的模型必须在其所驻留的应用程序的第一次迁移中可用。有关更多详细信息,请参阅 替换自定义 User 模型

LOGIN_REDIRECT_URL

默认值:'/accounts/profile/'

contrib.auth.login 视图没有 next 参数时,在登录后重定向请求的URL。

例如,这由 login_required() 装饰器使用。

此设置还接受 命名的网址格式,可用于减少配置复制,因为您不必在两个位置(settings 和URLconf)中定义URL。

LOGIN_URL

默认值:'/accounts/login/'

请求被重定向以进行登录的URL,特别是在使用 login_required() 装饰器时。

此设置还接受 命名的网址格式,可用于减少配置复制,因为您不必在两个位置(settings 和URLconf)中定义URL。

LOGOUT_REDIRECT_URL

New in Django 1.10.

默认值:None

在用户使用 logout() 视图注销后请求被重定向的URL(如果视图没有获取 next_page 参数)。

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

此设置还接受 命名的网址格式,可用于减少配置复制,因为您不必在两个位置(settings 和URLconf)中定义URL。

PASSWORD_RESET_TIMEOUT_DAYS

默认值:3

密码重置链接的有效天数。由 django.contrib.auth 密码复位机制使用。

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.BCryptPasswordHasher',
]
Changed in Django 1.10:

以下哈希从默认值中删除:

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

考虑使用 包裹密码哈希 来加强数据库中的散列。如果这不可行,请将此设置添加到您的项目,并添加您需要的任何哈希。

此外,还添加了 Argon2PasswordHasher

AUTH_PASSWORD_VALIDATORS

New in Django 1.9.

默认值:[] (空列表)

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

消息

django.contrib.messages 的设置。

MESSAGE_LEVEL

默认值:messages.INFO

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

重要

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

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

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

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'

有关详细信息,请参阅 消息存储后端

使用Cookie的后端(CookieStorageFallbackStorage)在设置Cookie时使用 SESSION_COOKIE_DOMAINSESSION_COOKIE_SECURESESSION_COOKIE_HTTPONLY 的值。

MESSAGE_TAGS

默认:

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

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

重要

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

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

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

会话

django.contrib.sessions 的设置。

SESSION_CACHE_ALIAS

默认值:'default'

如果您使用 基于高速缓存的会话存储,则选择要使用的缓存。

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.PickleSerializer'

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

有关详细信息,请参阅 会话序列化,包括关于使用 PickleSerializer 时可能的远程代码执行的警告。

网站

django.contrib.sites 的设置。

SITE_ID

默认值:未定义

django_site 数据库表中当前网站的ID(整数)。这是用来使应用程序数据可以钩到特定的网站,单个数据库可以管理多个网站的内容。

静态文件

django.contrib.staticfiles 的设置。

STATIC_ROOT

默认值:None

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

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

如果启用了 staticfiles 应用程序(如在默认项目模板中),collectstatic 管理命令将收集静态文件到此目录中。有关使用的详细信息,请参阅 managing static files 上的操作方法。

警告

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

STATIC_URL

默认值:None

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

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

如果不是 None,这将被用作 asset definitionsMedia 类)和 staticfiles app 的基本路径。

如果设置为非空值,它必须以斜杠结尾。

你可能需要 配置这些文件在开发中提供,肯定需要这样做 在生产

STATICFILES_DIRS

默认值:[] (空列表)

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

这应该设置为包含您的附加文件目录(ies)的完整路径的字符串列表。:

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/'collectstatic 管理命令将收集 STATIC_ROOT'downloads' 子目录中的“stats”文件。

这将允许您在您的模板中引用本地文件 '/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 找到。

有关示例,请参阅 从云服务或CDN提供静态文件

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)中的文件。如果存在多个具有相同名称的文件,则将使用找到的第一个文件。

默认情况下禁用一个finder:django.contrib.staticfiles.finders.DefaultStorageFinder。如果添加到您的 STATICFILES_FINDERS 设置,它将查找默认文件存储中的静态文件,如 DEFAULT_FILE_STORAGE 设置所定义。

注解

当使用 AppDirectoriesFinder 查找程序时,请确保您的应用程序可以通过静态文件找到。只需将应用程序添加到您的网站的 INSTALLED_APPS 设置。

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

核心设置主题索引

模板