设置¶ T0>

警告

重写设置时要小心,特别是当默认值是非空列表或字典时,比如STATICFILES_FINDERS 确保你保留了你想使用的Django功能所需的组件。

Core Settings

以下是Django核心中可用的设置列表及其默认值。 下面列出了由contrib应用程序提供的设置,然后是核心设置的主题索引。 有关介绍材料,请参阅settings topic guide

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

默认:[](空列表)

所有获取代码错误通知的人的列表。 When DEBUG=False and AdminEmailHandler is configured in LOGGING (done by default), Django emails these people the details of exceptions raised in the request/response cycle.

列表中的每个项目应该是(全名,电子邮件地址)的元组。 例:

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

ALLOWED_HOSTS

默认:[](空列表)

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

这个列表中的值可以是完全限定的名称(例如'www.example.com'),在这种情况下,它们将与请求的Host不敏感,不包括端口)。 A value beginning with a period can be used as a subdomain wildcard: '.example.com' will match example.com, www.example.com, and any other subdomain of example.com. '*'将匹配任何东西;在这种情况下,您有责任提供您自己的Host头文件的验证(可能在中间件中,如果这样的话,这个中间件必须在MIDDLEWARE中列出)。

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

If the Host header (or X-Forwarded-Host if USE_X_FORWARDED_HOST is enabled) does not match any value in this list, the django.http.HttpRequest.get_host() method will raise SuspiciousOperation.

When DEBUG is True and ALLOWED_HOSTS is empty, the host is validated against ['localhost', '127.0.0.1', '[::1]'].

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

This validation only applies via get_host(); if your code accesses the Host header directly from request.META you are bypassing this security protection.

在Django 1.11中更改:

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

在较早的版本中,如果DEBUG=True,则不检查ALLOWED_HOSTS 这在Django 1.10.3,1.9.11和1.8.16中也有所改变,以防止DNS重新绑定攻击。

APPEND_SLASH

默认:True

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

APPEND_SLASH设置仅在安装CommonMiddleware时使用(请参阅Middleware)。 另请参阅PREPEND_WWW

CACHES

默认:

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

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

CACHES设置必须配置default缓存;任何数量的附加缓存也可以被指定。 如果您使用本地内存缓存以外的缓存后端,或者您需要定义多个缓存,则需要使用其他选项。 以下缓存选项可用。

BACKEND

默认:''(空字符串)

缓存后端使用。 内置的缓存后端是:

  • 'django.core.cache.backends.db.DatabaseCache'
  • 'django.core.cache.backends.dummy.DummyCache'
  • 'django.core.cache.backends.filebased.FileBasedCache'
  • 'django.core.cache.backends.locmem.LocMemCache'
  • 'django.core.cache.backends.memcached.MemcachedCache'
  • 'django.core.cache.backends.memcached.PyLibMCCache'

You can use a cache backend that doesn’t ship with Django by setting BACKEND to a fully-qualified path of a cache backend class (i.e. 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

默认:''(空字符串)

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

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

OPTIONS

默认值:None

额外的参数传递给缓存后端。 可用的参数取决于您的缓存后端。

有关可用参数的信息可以在cache arguments文档中找到。 欲了解更多信息,请咨询您的后端模块自己的文档。

TIMEOUT

默认:300

缓存条目之前的秒数被认为是陈旧的。 如果此设置的值是None,则缓存条目不会过期。

VERSION

默认:1

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

有关更多信息,请参阅cache documentation

CACHE_MIDDLEWARE_ALIAS

默认:default

用于cache middleware的缓存连接。

CACHE_MIDDLEWARE_KEY_PREFIX

默认:''(空字符串)

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

请参阅Django’s cache framework

CACHE_MIDDLEWARE_SECONDS

默认:600

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

请参阅Django’s cache framework

CSRF_USE_SESSIONS

Django 1.11新增功能

默认:False

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

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

CSRF_FAILURE_VIEW

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

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

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

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

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

CSRF_HEADER_NAME

默认:'HTTP_X_CSRFTOKEN'

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

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

CSRF_TRUSTED_ORIGINS

默认:[](空列表)

不安全请求的可信来源主机列表(例如POST)。 For a secure unsafe request, Django’s CSRF protection requires that the request have a Referer header that matches the origin present in the Host header. 这可以防止来自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以将此数据库中的每个视图包装在事务中。 请参阅Tying transactions to HTTP requests

AUTOCOMMIT

默认:True

如果您想要disable Django’s transaction management并实现您自己的事务,请将其设置为False

ENGINE

默认:''(空字符串)

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

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

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

HOST

默认:''(空字符串)

连接到数据库时使用哪个主机。 一个空字符串表示本地主机。 不用于SQLite。

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

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

如果你正在使用MySQL并且这个值没有以正斜杠开始,那么这个值就是主机。

如果您使用的是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

默认:{}(空字典)

连接到数据库时使用的额外参数。 可用的参数取决于您的数据库后端。

有关可用参数的信息可以在Database Backends文档中找到。 欲了解更多信息,请咨询您的后端模块自己的文档。

PASSWORD

默认:''(空字符串)

连接到数据库时使用的密码。 不用于SQLite。

PORT

默认:''(空字符串)

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

TIME_ZONE

默认值:None

表示存储在此数据库中的日期时间的时区的字符串(假定它不支持时区)或None DATABASES设置的这个内部选项接受与一般TIME_ZONE设置相同的值。

这允许与本地时间而不是UTC存储日期时间的第三方数据库进行交互。 为避免出现DST更改的问题,请不要为由Django管理的数据库设置此选项。

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

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

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

DISABLE_SERVER_SIDE_CURSORS

Django新增1.11.1。

默认:False

如果要通过QuerySet.iterator()禁用服务器端游标,请将其设置为True Transaction pooling and server-side cursors describes the use case.

这是一个PostgreSQL特定的设置。

USER

默认:''(空字符串)

连接到数据库时使用的用户名。 不用于SQLite。

TEST

默认:{}(空字典)

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

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

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

The following keys in the TEST dictionary are available:

CHARSET

默认值:None

用于创建测试数据库的字符集编码。 这个字符串的值直接传递给数据库,所以它的格式是后端特定的。

PostgreSQLpostgresql)和MySQLmysql)支持。

COLLATION

默认值:None

创建测试数据库时使用的排序顺序。 这个值直接传递给后端,所以它的格式是后端特定的。

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

DEPENDENCIES

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

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

MIRROR

默认值:None

此数据库在测试期间应镜像的别名。

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

NAME

默认值:None

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

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

参见The test database

SERIALIZE

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

TEMPLATE
Django 1.11新增功能

这是一个PostgreSQL特定的设置。

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

CREATE_DB

默认:True

这是一个特定于Oracle的设置。

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

CREATE_USER

默认:True

这是一个特定于Oracle的设置。

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

USER

默认值:None

这是一个特定于Oracle的设置。

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

PASSWORD

默认值:None

这是一个特定于Oracle的设置。

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

在Django 1.11中更改:

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

TBLSPACE

默认值:None

这是一个特定于Oracle的设置。

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

TBLSPACE_TMP

默认值:None

这是一个特定于Oracle的设置。

运行测试时将使用的临时表空间的名称。 If not provided, Django will use '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允许增长的最大大小。

DATAFILE_SIZE
Django 2.0新增功能

默认:'50M'

这是一个特定于Oracle的设置。

DATAFILE的初始大小。

DATAFILE_TMP_SIZE
Django 2.0新增功能

默认:'50M'

这是一个特定于Oracle的设置。

DATAFILE_TMP的初始大小。

DATAFILE_EXTSIZE
Django 2.0新增功能

默认:'25M'

这是一个特定于Oracle的设置。

需要更多空间时扩展DATAFILE的数量。

DATAFILE_TMP_EXTSIZE
Django 2.0新增功能

默认:'25M'

这是一个特定于Oracle的设置。

需要更多空间时,DATAFILE_TMP的扩展量。

DATA_UPLOAD_MAX_MEMORY_SIZE ¶ T0>

默认:2621440(即2.5 MB)。

引发请求体可能在SuspiciousOperationRequestDataTooBig)之前的最大字节数。 访问request.bodyrequest.POST时完成检查,并根据总请求大小(不包括任何文件上载数据)进行计算。 您可以将其设置为None以禁用检查。 应用程序预计会收到异常大的表单帖子应调整此设置。

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

另见FILE_UPLOAD_MAX_MEMORY_SIZE

DATA_UPLOAD_MAX_NUMBER_FIELDS ¶ T0>

默认:1000

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

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

DATABASE_ROUTERS

默认:[](空列表)

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

See the documentation on automatic database routing in multi database configurations.

DATE_FORMAT

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

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

请参阅DATETIME_FORMATTIME_FORMATSHORT_DATE_FORMAT

DATE_INPUT_FORMATS

默认:

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

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

USE_L10NTrue时,语言环境规定的格式具有更高的优先级并将被应用。

另请参阅DATETIME_INPUT_FORMATSTIME_INPUT_FORMATS

DATETIME_FORMAT

Default: 'N j, Y, P' (e.g. 二月 4, 2003年, 4 下午)

用于在系统的任何部分显示日期时间字段的默认格式。 请注意,如果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 module syntax,而不是date模板过滤器中的格式字符串。

USE_L10NTrue时,语言环境规定的格式具有更高的优先级并将被应用。

另请参阅DATE_INPUT_FORMATSTIME_INPUT_FORMATS

DEBUG

默认:False

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

切勿将DEBUG开启的网站投入生产。

你抓到了吗? 切勿将DEBUG开启的网站投入生产。

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

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

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

请注意,这些是部分匹配。 'PASS' will also match PASSWORD, just as 'TOKEN' will also match TOKENIZED and so on.

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

记住在运行DEBUG时运行,Django会记住它执行的每个SQL查询。 在调试时这很有用,但是它会在生产服务器上快速占用内存。

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

注意

The default settings.py file created by django-admin startproject sets DEBUG = True for convenience.

DEBUG_PROPAGATE_EXCEPTIONS

默认:False

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

这对于一些测试设置可能是有用的。 除非您希望您的Web服务器(而不是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标题。

自2.0版弃用: 此设置已被弃用,因为它与第三方应用程序不能很好地交互,并且已经过时,因为HTML5已经大部分被取代了XHTML。

DEFAULT_EXCEPTION_REPORTER_FILTER

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

如果尚未分配给HttpRequest实例,则使用默认的异常记录过滤器类。 请参阅Filtering error reports

DEFAULT_FILE_STORAGE

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

默认文件存储类,用于任何不指定特定存储系统的文件相关操作。 请参阅Managing files

DEFAULT_FROM_EMAIL

默认:'webmaster@localhost'

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

DEFAULT_INDEX_TABLESPACE

默认:''(空字符串)

默认的表空间,用于没有指定的字段的索引(如果后端支持它)(请参见Tablespaces)。

DEFAULT_TABLESPACE

默认:''(空字符串)

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

DISALLOWED_USER_AGENTS

默认:[](空列表)

表示系统范围内不允许访问任何页面的User-Agent字符串的已编译正则表达式对象的列表。 使用这个坏机器人/履带。 只有在安装CommonMiddleware时才会使用(请参阅Middleware)。

EMAIL_BACKEND

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

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

EMAIL_FILE_PATH

默认:未定义

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

EMAIL_HOST

默认:'localhost'

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

另请参阅EMAIL_PORT

EMAIL_HOST_PASSWORD

默认:''(空字符串)

用于EMAIL_HOST中定义的SMTP服务器的密码。 在向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_LOCALTIME

Django 1.11新增功能

默认:False

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

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

Note that EMAIL_USE_TLS/EMAIL_USE_SSL are mutually exclusive, so only set one of those settings to True.

EMAIL_SSL_CERTFILE

默认值:None

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

EMAIL_SSL_KEYFILE

默认值:None

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

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

EMAIL_TIMEOUT

默认值:None

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

FILE_CHARSET

默认:'utf-8'

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

FILE_UPLOAD_HANDLERS

默认:

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

用于上传的处理程序列表。 改变这个设置可以完成Django的上传过程的定制,甚至是替换。

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

FILE_UPLOAD_MAX_MEMORY_SIZE

默认:2621440(即2.5 MB)。

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

另见DATA_UPLOAD_MAX_MEMORY_SIZE

FILE_UPLOAD_DIRECTORY_PERMISSIONS

默认值:None

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

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

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

FILE_UPLOAD_PERMISSIONS

默认值:None

用于设置新上传的文件的数字模式(即0o644)。 有关这些模式的含义的更多信息,请参阅os.chmod()的文档。

如果没有给出或None,则会得到与操作系统相关的行为。 在大多数平台上,临时文件将具有0o600的模式,并且使用系统的标准umask保存从内存保存的文件。

出于安全原因,这些权限不适用于存储在FILE_UPLOAD_TEMP_DIR中的临时文件。

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

警告

始终在模式前加上0。

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

FILE_UPLOAD_TEMP_DIR

默认值:None

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

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

FIRST_DAY_OF_WEEK

默认:0(星期天)

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

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

FIXTURE_DIRS

默认:[](空列表)

搜索夹具文件的目录列表,除了每个应用程序的fixtures目录之外,还有搜索顺序。

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

请参阅Providing initial data with fixturesFixture loading提供初始数据。

FORCE_SCRIPT_NAME

默认值:None

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

FORM_RENDERER

Django 1.11新增功能

Default: 'django.forms.renderers.DjangoTemplates'

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

FORMAT_MODULE_PATH

默认值:None

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

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

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

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

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

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

Available formats are DATE_FORMAT, TIME_FORMAT, DATETIME_FORMAT, YEAR_MONTH_FORMAT, MONTH_DAY_FORMAT, SHORT_DATE_FORMAT, SHORT_DATETIME_FORMAT, FIRST_DAY_OF_WEEK, DECIMAL_SEPARATOR, THOUSAND_SEPARATOR and NUMBER_GROUPING.

IGNORABLE_404_URLS

默认:[](空列表)

描述通过电子邮件报告HTTP 404错误时应忽略的URL的已编译正则表达式对象列表(请参阅Error reporting)。 正则表达式匹配request's full paths(包括查询字符串,如果有的话)。 如果你的网站没有提供像favicon.icorobots.txt这样的通常请求的文件,或者脚本小子受到了攻击,请使用此功能。

这仅在BrokenLinkEmailsMiddleware已启用的情况下使用(请参阅Middleware)。

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" 请参阅语言标识符列表Internationalization and localization

USE_I18N must be active for this setting to have any effect.

它有两个目的:

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

有关更多详细信息,请参阅How Django discovers language preference

LANGUAGES

默认值:所有可用语言的列表。 这个名单不断增长,在这里包括一个副本将不可避免地过时了。 您可以通过查看django/conf/global_settings.py(或查看联机源)来查看当前已翻译语言的列表。

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

通常,默认值就足够了。 如果您想限制语言选择到Django提供的语言的一个子集,只设置这个设置。

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

这是一个示例设置文件:

from django.utils.translation import gettext_lazy as _

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

LOCALE_PATHS

默认:[](空列表)

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

例:

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

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

LOGGING

默认值:一个日志配置字典。

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

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

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

LOGGING_CONFIG

默认:'logging.config.dictConfig'

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

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

MANAGERS

默认:[](空列表)

A list in the same format as ADMINS that specifies who should get broken link notifications when BrokenLinkEmailsMiddleware is enabled.

MEDIA_ROOT

默认:''(空字符串)

绝对目录路径,指向用户上传的文件

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

另见MEDIA_URL

警告

MEDIA_ROOT and STATIC_ROOT must have different values. 在引入STATIC_ROOT之前,通常在MEDIA_ROOT上依赖或回退以提供静态文件;但是,由于这可能会造成严重的安全隐患,因此需要进行验证检查以防止此问题。

MEDIA_URL

默认:''(空字符串)

处理从MEDIA_ROOT服务的媒体的URL,用于managing stored files 如果设置为非空值,它必须以斜杠结尾。 您将需要在开发和生产环境中configure these files to be served

If you want to use {{ MEDIA_URL }} in your templates, add 'django.template.context_processors.media' in the 'context_processors' option of TEMPLATES.

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

警告

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

警告

MEDIA_URL and STATIC_URL must have different values. 有关更多详细信息,请参阅MEDIA_ROOT

MIDDLEWARE

默认值:None

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

MIGRATION_MODULES

默认:{}(空字典)

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

例:

{'blog': 'blog.db_migrations'}

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

如果提供了app_label参数,makemigrations将自动创建包,如果它尚不存在。

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

MONTH_DAY_FORMAT

默认值:'F j'

在仅显示月份和日期的情况下,用于Django管理员更改列表页面上的日期字段(可能还有系统的其他部分)的默认格式。

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

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

请参阅allowed date format strings 请参阅DATE_FORMATDATETIME_FORMATTIME_FORMATYEAR_MONTH_FORMAT

NUMBER_GROUPING

默认:0

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

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

一些地区使用非统一的数字分组,例如10,00,00,000en_IN中。 对于这种情况,您可以提供一个序列,其中应用了数字组大小的数量。 第一个数字定义了小数定界符之前的组的大小,每个后面的数字定义了前面的组的大小。 如果序列以-1结束,则不执行进一步的分组。 如果序列以0结束,则最后的组大小用于数字的其余部分。

en_IN的示例元组:

NUMBER_GROUPING = (3, 2, 0)

请注意,如果USE_L10N设置为True,则语言环境规定的格式具有更高的优先级,并将被应用。

请参阅DECIMAL_SEPARATORTHOUSAND_SEPARATORUSE_THOUSAND_SEPARATOR

在Django 1.11中更改:

增加了对非统一数字分组的支持。

PREPEND_WWW

默认:False

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

ROOT_URLCONF

默认:未定义

表示到您的根URLconf的完整Python导入路径的字符串。 例如:"mydjangoapps.urls" 通过在传入的HttpRequest对象上设置属性urlconf,可以基于每个请求重写。 有关详细信息,请参阅How Django processes a request

SECRET_KEY

默认:''(空字符串)

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

django-admin startproject automatically adds a randomly-generated SECRET_KEY to each new project.

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

Django will refuse to start if SECRET_KEY is not set.

警告

保持这个值的秘密。

Running Django with a known SECRET_KEY defeats many of Django’s security protections, and can lead to privilege escalation and remote code execution vulnerabilities.

密钥用于:

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

注意

The default settings.py file created by django-admin startproject creates a unique SECRET_KEY for convenience.

SECURE_BROWSER_XSS_FILTER

默认:False

如果True,则SecurityMiddleware设置X-XSS-Protection: 1; mode=block标题。

SECURE_CONTENT_TYPE_NOSNIFF

默认:False

如果True,那么SecurityMiddleware会在所有尚未拥有它的响应中设置X-Content-Type-Options: nosniff标头。

SECURE_HSTS_INCLUDE_SUBDOMAINS

默认:False

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

警告

不正确的设置可以不可逆转地(对于SECURE_HSTS_SECONDS的值)破坏你的网站。 首先阅读HTTP Strict Transport Security文档。

SECURE_HSTS_PRELOAD

Django 1.11新增功能

默认:False

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

SECURE_HSTS_SECONDS

默认:0

If set to a non-zero integer value, the SecurityMiddleware sets the HTTP Strict Transport Security header on all responses that do not already have it.

警告

不正确的设置可以不可逆转地(一段时间)打破你的网站。 首先阅读HTTP Strict Transport Security文档。

SECURE_PROXY_SSL_HEADER

默认值:None

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

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

但是,如果您的Django应用程序位于代理之后,则代理可能会“吞咽”请求为HTTPS的事实,即使用代理和Django之间的非HTTPS连接。 在这种情况下,即使对于最终用户通过HTTPS进行的请求,is_secure()总是会返回False

在这种情况下,您需要配置您的代理来设置一个自定义的HTTP头,告诉Django请求是否通过HTTPS进入,您将需要设置SECURE_PROXY_SSL_HEADER,以便Django知道什么头寻找。

你需要设置一个元组,包含两个元素 - 要查找的头的名称和所需的值。 例如:

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

在这里,我们告诉Django我们信任来自我们的代理的X-Forwarded-Proto头,并且任何时候它的值都是'https',那么请求保证是安全的(即它最初通过HTTPS进入)。 Obviously, you should only set this setting if you control your proxy or have some other guarantee that it sets/strips this header appropriately.

请注意,头文件的格式必须是request.META所使用的格式 - 全部大写,可能以HTTP_开头。 (请记住,在使request.META中的头部可用之前,Django自动将'HTTP_'添加到x-header名称的开头。

警告

如果你在不知道你在做什么的情况下设置这个,你可能会在你的网站上打开安全漏洞。 如果你没有设定的话。 认真。

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

  • 您的Django应用程序在代理之后。
  • 您的代理从所有传入的请求中去掉X-Forwarded-Proto标题。 换句话说,如果最终用户在他们的请求中包含这个头部,代理将丢弃它。
  • 您的代理设置X-Forwarded-Proto标题,并将其发送给Django,但仅适用于最初通过HTTPS发送的请求。

如果其中任何一个不正确,则应将此设置设置为None,并找到另一种确定HTTPS的方式,可能是通过自定义中间件。

SECURE_REDIRECT_EXEMPT

默认:[](空列表)

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

SECURE_SSL_HOST

默认值:None

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

SECURE_SSL_REDIRECT

默认:False

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

注意

如果将其设置为True会导致无限的重定向,则可能意味着您的网站运行在代理之后,无法确定哪些请求是安全的,哪些不是。 你的代理可能会设置一个头来表示安全的请求;您可以通过找出该标题是什么并相应地配置SECURE_PROXY_SSL_HEADER设置来纠正问题。

SERIALIZATION_MODULES

默认:未定义

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

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

SERVER_EMAIL

默认:'root@localhost'

The email address that error messages come from, such as those sent to ADMINS and MANAGERS.

为什么我的电子邮件从不同的地址发送?

该地址仅用于错误消息。 It is not the address that regular email messages sent with send_mail() come from; for that, see DEFAULT_FROM_EMAIL.

SHORT_DATE_FORMAT

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

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

另请参阅DATE_FORMATSHORT_DATETIME_FORMAT

SHORT_DATETIME_FORMAT

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

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

另请参阅DATE_FORMATSHORT_DATE_FORMAT

SIGNING_BACKEND

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

后端用于签署cookie和其他数据。

另请参阅Cryptographic signing文档。

SILENCED_SYSTEM_CHECKS

默认:[](空列表)

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

另请参阅System check framework文档。

TEMPLATES

默认:[](空列表)

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

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

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

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

BACKEND

默认:未定义

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

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

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

NAME

默认:见下文

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

它默认为定义引擎类的模块的名称,即当没有提供时,它的最后一个BACKEND For example if the backend is 'mypackage.whatever.Backend' then its default name is 'whatever'.

DIRS

默认:[](空列表)

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

APP_DIRS

默认:False

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

注意

django-admin startproject创建的默认settings.py 'APP_DIRS': 真正.

OPTIONS

默认:{}(空字典)

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

TEST_RUNNER

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

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

TEST_NON_SERIALIZED_APPS

默认:[](空列表)

In order to restore the database state between tests for TransactionTestCases and database backends without transactions, Django will serialize the contents of all apps when it starts the test run so it can then reload from that copy before running tests that need it.

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

THOUSAND_SEPARATOR

默认:','(逗号)

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

请注意,如果USE_L10N设置为True,则语言环境规定的格式具有更高的优先级,并将被应用。

请参阅NUMBER_GROUPINGDECIMAL_SEPARATORUSE_THOUSAND_SEPARATOR

TIME_FORMAT

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

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

另请参阅DATE_FORMATDATETIME_FORMAT

TIME_INPUT_FORMATS

默认:

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

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

USE_L10NTrue时,语言环境规定的格式具有更高的优先级并将被应用。

另请参阅DATE_INPUT_FORMATSDATETIME_INPUT_FORMATS

TIME_ZONE

默认:'America/Chicago'

表示此安装的时区的字符串。 请参阅时区列表

注意

Since Django was first released with the TIME_ZONE set to 'America/Chicago', the global setting (used if nothing is defined in your project’s settings.py) remains 'America/Chicago' for backwards compatibility. 新的项目模板默认为'UTC'

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

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

在Unix环境下(实现time.tzset()),Django将os.environ['TZ']变量设置为您在TIME_ZONE设置。 因此,您所有的视图和模型将自动在此时区内运行。 但是,如果您正在使用manually configuring settings中所述的手动配置选项,则Django不会设置TZ环境变量。 如果Django没有设置TZ环境变量,则由您决定是否在正确的环境中运行您的进程。

注意

Django无法可靠地在Windows环境中使用备用时区。 If you’re running Django on Windows, TIME_ZONE must be set to match the system time zone.

USE_ETAGS

默认:False

指定是否输出ETag标题的布尔值。 这可以节省带宽,但会降低性能。 这由CommonMiddlewarecache framework使用。

自1.11版以来已弃用: 此设置不赞成使用ConditionalGetMiddleware,不管此设置如何设置一个ETag。

USE_I18N

默认:True

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

请参阅LANGUAGE_CODEUSE_L10NUSE_TZ

注意

The default settings.py file created by django-admin startproject includes USE_I18N = True for convenience.

USE_L10N

默认:False

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

请参阅LANGUAGE_CODEUSE_I18NUSE_TZ

注意

The default settings.py file created by django-admin startproject includes USE_L10N = True for convenience.

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

注意

The default settings.py file created by django-admin startproject includes USE_TZ = True for convenience.

USE_X_FORWARDED_HOST

默认:False

指定是否使用X-Forwarded-Host标题优先于Host标题的布尔值。 只有在设置了这个头部的代理正在使用的情况下才能启用。

此设置优先于USE_X_FORWARDED_PORT Per RFC 7239#page-7, the X-Forwarded-Host header can include the port number, in which case you shouldn’t use USE_X_FORWARDED_PORT.

USE_X_FORWARDED_PORT

默认:False

指定是否使用X-Forwarded-Port标题优先于SERVER_PORT META变量的布尔值。 只有在设置了这个头部的代理正在使用的情况下才能启用。

USE_X_FORWARDED_HOST takes priority over this setting.

WSGI_APPLICATION

默认值:None

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

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

YEAR_MONTH_FORMAT

默认:'F Y'

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

例如,当一个Django管理变更列表页面被日期追溯过滤时,给定月份的标题显示月份和年份。 不同的区域设置有不同的格式。 例如,美国英语会说“2006年1月”,而另一个语言环境可能会说“2006/1月”。

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

请参阅allowed date format strings 请参阅DATE_FORMATDATETIME_FORMATTIME_FORMATMONTH_DAY_FORMAT

X_FRAME_OPTIONS

默认:'SAMEORIGIN'

The default value for the X-Frame-Options header used by XFrameOptionsMiddleware. 请参阅clickjacking protection文档。

验证 T0> ¶ T1>

django.contrib.auth的设置。

AUTHENTICATION_BACKENDS

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

尝试验证用户时使用的身份验证后端类(字符串)的列表。 有关详细信息,请参阅authentication backends documentation

AUTH_USER_MODEL

默认:'auth.User'

用于表示用户的模型。 请参阅Substituting a custom User model

警告

在项目的生命周期内(即,一旦您已经制作并移植依赖于它的模型),您无法更改AUTH_USER_MODEL设置。 它的目的是在项目开始时设置,它所指的模型必须在它所居住的应用程序的第一次迁移中可用。 有关更多详细信息,请参阅Substituting a custom User model

LOGIN_REDIRECT_URL

默认:'/accounts/profile/'

contrib.auth.login视图获取next参数时,登录后请求被重定向的URL。

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

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

LOGIN_URL

默认:'/accounts/login/'

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

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

LOGOUT_REDIRECT_URL

默认值:None

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

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

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

PASSWORD_RESET_TIMEOUT_DAYS

默认:3

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

PASSWORD_HASHERS

请参阅How Django stores passwords

默认:

[
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.Argon2PasswordHasher',
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
]

AUTH_PASSWORD_VALIDATORS

默认:[](空列表)

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

消息 T0> ¶ T1>

django.contrib.messages的设置。

MESSAGE_LEVEL

默认值:messages.INFO

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

重要

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

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

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

MESSAGE_STORAGE

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

控制Django存储消息数据的位置。 有效值是:

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

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

使用cookies的后端 - CookieStorageFallbackStorage - 使用SESSION_COOKIE_DOMAINSESSION_COOKIE_SECURESESSION_COOKIE_HTTPONLY设置他们的cookies时。

MESSAGE_TAGS

默认:

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

这将消息级别映射到消息标记,消息标记通常呈现为HTML中的CSS类。 如果您指定一个值,它将扩展默认值。 这意味着你只需要指定你需要覆盖的值。 请参阅Displaying messages了解更多详情。

重要

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

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

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

会话 T0> ¶ T1>

django.contrib.sessions的设置。

SESSION_CACHE_ALIAS

默认:'default'

如果您使用cache-based session storage,则选择要使用的缓存。

SESSION_ENGINE

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

控制Django存储会话数据的位置。 包括的引擎是:

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

有关更多详细信息,请参阅Configuring the session engine

SESSION_EXPIRE_AT_BROWSER_CLOSE

默认:False

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

SESSION_FILE_PATH

默认值:None

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

SESSION_SAVE_EVERY_REQUEST

默认:False

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

SESSION_SERIALIZER

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

串行化程序类的完整导入路径,用于序列化会话数据。 包括的序列化器是:

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

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

网站 T0> ¶ T1>

django.contrib.sites的设置。

SITE_ID

默认:未定义

django_site数据库表中当前网站的ID(整数)。 这用于使应用程序数据可以挂接到特定的站点,并且单个数据库可以管理多个站点的内容。

静态文件

django.contrib.staticfiles的设置。

STATIC_ROOT

默认值:None

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

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

如果启用了staticfiles contrib应用程序(如在默认项目模板中),那么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

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

您可能需要configure these files to be served in development,并且肯定需要在生产in production

STATICFILES_DIRS

默认:[](空列表)

此设置定义了在启用FileSystemFinder查找程序时,静态文件应用程序将经过的附加位置。如果使用collectstaticfindstatic管理命令或使用静态文件服务视图。

这应该被设置为包含完整路径到你的附加文件目录的字符串列表,例如:

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

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

前缀(可选)

如果你想用其他命名空间来引用其中一个位置的文件,可以可选地提供一个前缀为(prefix, path) 元组,例如:

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

For example, assuming you have STATIC_URL set to '/static/', the collectstatic management command would collect the “stats” files in a 'downloads' subdirectory of STATIC_ROOT.

This would allow you to refer to the local file '/opt/webfiles/stats/polls_20101022.tar.gz' with '/static/downloads/polls_20101022.tar.gz' in your templates, e.g.:

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

STATICFILES_STORAGE

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

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

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

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

STATICFILES_FINDERS

默认:

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

知道如何在各个位置查找静态文件的finder后端列表。

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

一个取景器默认是禁用的:django.contrib.staticfiles.finders.DefaultStorageFinder 如果添加到您的STATICFILES_FINDERS设置中,它将在DEFAULT_FILE_STORAGE设置中定义的默认文件存储中查找静态文件。

注意

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

静态文件查找器目前被认为是一个专用接口,因此这个接口没有文档。

Core Settings Topical Index