Python-Django settings.py 参数详解

文章目录

设置

警告  
覆盖设置时要小心,特别是当默认值是非空列表或字典时,例如STATICFILES_FINDERS。确保保留您希望使用的Django功能所需的组件。

1.核心设置

这是Django核心中可用的设置列表及其默认值。下面列出了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

默认值:( []list)

获取代码错误通知的所有人员的列表。当 DEBUG=False和AdminEmailHandler 在配置LOGGING(默认情况下完成),Django的电子邮件,这些人在请求/响应周期引发的异常的细节。

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

[('John', '[email protected]'), ('Mary', '[email protected]')]

ALLOWED_HOSTS

默认值:( []list)

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

此列表中的值可以是完全限定名称(例如’www.example.com’),在这种情况下,它们将与请求的Host标头完全匹配(不区分大小写,不包括端口)。用了一段开头的值可以用作一个子域通配符:’.example.com’将匹配 example.com,www.example.com以及任何其他子域 example.com。值’*'将匹配任何东西; 在这种情况下,您有责任提供自己的Host标头验证(可能在中间件中;如果是这样,则必须首先列出此中间件 MIDDLEWARE)。

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

如果Host标题(或者X-Forwarded-Host如果 USE_X_FORWARDED_HOST已启用)与此列表中的任何值都不匹配,则该django.http.HttpRequest.get_host()方法将引发 SuspiciousOperation。

当DEBUGis True和ALLOWED_HOSTS为空时,将验证主机。[‘localhost’, ‘127.0.0.1’, ‘[::1]’]

ALLOWED_HOSTS运行测试时也会检查。

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

在Django 1.11中更改:
在旧版本中,ALLOWED_HOSTS运行测试时未检查。

在旧版本中,ALLOWED_HOSTS未检查是否DEBUG=True。这也在Django 1.10.3,1.9.11和1.8.16中发生了变化,以防止DNS重新绑定攻击。

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

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

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

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_COOKIE_AGE

默认值:( 31449600大约1年,以秒为单位)

CSRF cookie的时代,以秒为单位。

设置长期到期时间的原因是为了避免在用户关闭浏览器或为页面添加书签然后从浏览器缓存加载该页面时出现问题。如果没有持久性cookie,表单提交在这种情况下将失败。

某些浏览器(特别是Internet Explorer)可能会禁止使用持久性cookie,或者可能会将cookie的索引损坏到磁盘上,从而导致CSRF保护检查(有时间歇性地)失败。将此设置更改None为使用基于会话的CSRF cookie,它将cookie保留在内存中而不是持久存储中。


CSRF_COOKIE_DOMAIN

默认: None

设置CSRF cookie时要使用的域。这对于轻松允许跨子域请求从正常的跨站点请求伪造保护中排除非常有用。它应设置为一个字符串, "example.com"以允许来自另一个子域的视图接受来自一个子域上的表单的POST请求。

请注意,此设置的存在并不意味着默认情况下Django的CSRF保护不受跨子域攻击的影响 - 请参阅 CSRF限制部分。


CSRF_COOKIE_HTTPONLY

默认: False

是否HttpOnly在CSRF cookie上使用flag。如果设置为 True,则客户端JavaScript将无法访问CSRF cookie。

将CSRF cookie指定为HttpOnly不提供任何实际保护,因为CSRF仅用于防止跨域攻击。如果攻击者可以通过JavaScript读取cookie,那么就浏览器所知,他们已经在同一个域中,所以无论如何他们都可以做任何他们喜欢的事情。(XSS比CSRF更大。)

虽然这种设置几乎没有什么实际效益,但安全审核员有时会要求它。

如果启用此功能并需要使用AJAX请求发送CSRF令牌的值,则JavaScript必须从页面上的隐藏CSRF令牌表单输入中提取值,而不是从cookie中提取值。

有关SESSION_COOKIE_HTTPONLY详情,请参阅HttpOnly。


CSRF_COOKIE_NAME

默认: ‘csrftoken’

用于CSRF身份验证令牌的cookie的名称。这可以是您想要的任何内容(只要它与您应用程序中的其他cookie名称不同)。请参阅跨站点请求伪造保护。


CSRF_COOKIE_PATH

默认: ‘/’

CSRF cookie上设置的路径。这应该与Django安装的URL路径匹配,或者是该路径的父路径。

如果您在同一主机名下运行多个Django实例,这将非常有用。他们可以使用不同的cookie路径,每个实例只能看到自己的CSRF cookie。


CSRF_COOKIE_SECURE

默认: False

是否为CSRF cookie使用安全cookie。如果设置为True,则cookie将被标记为“安全”,这意味着浏览器可以确保cookie仅通过HTTPS连接发送。


CSRF_USE_SESSIONS

Django 1.11中的新功能。

默认: False

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

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


CSRF_FAILURE_VIEW

默认: ‘django.views.csrf.csrf_failure’

当CSRF保护拒绝传入请求时要使用的视图函数的虚线路径。该函数应具有此签名:

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

默认值:( []list)

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

False如果要禁用Django的事务管理并实现自己的事务管理,请将此设置为。


ENGINE

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

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

  • ‘django.db.backends.postgresql’
  • ‘django.db.backends.mysql’
  • ‘django.db.backends.sqlite3’
  • ‘django.db.backends.oracle’

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


HOST

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

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

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

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

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

如果您正在使用PostgreSQL,默认情况下(空HOST),与数据库的连接是通过UNIX域套接字(“本地”行 pg_hba.conf)完成的。如果您的UNIX域套接字不在标准位置,请使用相同的unix_socket_directoryfrom 值postgresql.conf。如果要通过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_TZ是True和数据库不支持时区(如SQLite的,MySQL和甲骨文),Django的读取,如果它不是根据这个选项,如果它被设置在UTC在当地时间写日期时间。

如果USE_TZ是True和数据库支持时区(如PostgreSQL的),它是设置这个选项错误。

如果USE_TZ是False,它是设置这个选项错误。


DISABLE_SERVER_SIDE_CURSORS

Django 1.11.1中的新功能。

默认: False

True如果要禁用服务器端游标,请将 此项设置为QuerySet.iterator()。事务池和服务器端游标 描述了用例。

这是PostgreSQL特定的设置。


USER

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

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


TEST

默认值:( {}空字典)

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

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

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

TEST字典中的以下键可用:


CHARSET

默认: None

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

由PostgreSQL(postgresql)和MySQL(mysql)后端支持。


COLLATION

默认: None

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

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


DEPENDENCIES

默认值:[‘default’],对于除了之外的所有数据库default,没有依赖项。

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


MIRROR

默认: None

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

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


NAME

默认: None

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

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

请参阅测试数据库。


SERIALIZE

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


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特定的设置。

运行测试时将使用的临时表空间的名称。如果没有提供,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允许增长到的最大大小。


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

默认值:( 2621440即2.5 MB)。

引发SuspiciousOperation(RequestDataTooBig)之前请求主体可能的最大大小(以字节为单位 )。访问时,检查是request.body或request.POST 并且针对不包括任何文件上传数据的总请求大小来计算。您可以将其设置None为禁用检查。预计会收到异常大型表单帖子的应用程序应调整此设置。

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

另见FILE_UPLOAD_MAX_MEMORY_SIZE。


DATA_UPLOAD_MAX_NUMBER_FIELDS

默认: 1000

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

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


DATABASE_ROUTERS

默认值:( []list)

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

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


DATE_FORMAT

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

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

另见DATETIME_FORMAT,TIME_FORMAT和SHORT_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_L10N是True时,区域设置的规定格式具有更高的优先级,将被代替使用。

另见DATETIME_INPUT_FORMATS和TIME_INPUT_FORMATS。


DATETIME_FORMAT

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

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

另见DATE_FORMAT,TIME_FORMAT和SHORT_DATETIME_FORMAT。


DATETIME_INPUT_FORMATS

默认:

[
    '%Y-%m-%d %H:%M:%S',     # '2006-10-25 14:30:59'
    '%Y-%m-%d %H:%M:%S.%f',  # '2006-10-25 14:30:59.000200'
    '%Y-%m-%d %H:%M',        # '2006-10-25 14:30'
    '%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_L10N是True时,区域设置的规定格式具有更高的优先级,将被代替使用。

另见DATE_INPUT_FORMATS和TIME_INPUT_FORMATS。


DEBUG

默认: False

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

切勿在DEBUG打开时将网站部署到生产环境中。

你抓到了吗?切勿将网站部署到生产环境中DEBUG 。

调试模式的主要功能之一是显示详细的错误页面。如果在你的应用程序将引发异常DEBUG是True,Django会显示详细的追踪,包括关于环境的大量元数据,如当前定义的所有Django的设置(从 settings.py)。

作为安全措施,Django 不会包含可能敏感的设置,例如SECRET_KEY。具体而言,它将排除任何名称包含以下任何内容的设置:

  • ‘API’
  • ‘KEY’
  • ‘PASS’
  • ‘SECRET’
  • ‘SIGNATURE’
  • ‘TOKEN’

请注意,这些是部分匹配。'PASS’也将匹配PASSWORD,同样’TOKEN’也会匹配TOKENIZED等。
不过,请注意,调试输出的各个部分总是不适合公共使用。文件路径,配置选项等都为攻击者提供了有关服务器的额外信息。
同样重要的是要记住,当DEBUG 打开时,Django会记住它执行的每个SQL查询。这在您进行调试时很有用,但它会快速消耗生产服务器上的内存。

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

注意

为方便起见,settings.py由集创建的默认文件。django-admin startprojectDEBUG = True

DEBUG_PROPAGATE_EXCEPTIONS

默认: False

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

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


DECIMAL_SEPARATOR

默认值:( '.'点)

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

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

另见NUMBER_GROUPING,THOUSAND_SEPARATOR和 USE_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实例分配给实例,则使用默认异常报告过滤器类。请参阅筛选错误报告。


DEFAULT_FILE_STORAGE

默认: ‘django.core.files.storage.FileSystemStorage’

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


DEFAULT_FROM_EMAIL

默认: ‘webmaster@localhost’

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


DEFAULT_INDEX_TABLESPACE

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

如果后端支持,则用于未指定一个字段的索引的默认表空间(请参阅表空间)。


DEFAULT_TABLESPACE

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

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


DISALLOWED_USER_AGENTS

默认值:( []list)

在系统范围内表示不允许访问任何页面的User-Agent字符串的已编译正则表达式对象的列表。用于坏机器人/爬虫。仅在CommonMiddleware安装时使用(​​参见 中间件)。


EMAIL_BACKEND

默认: ‘django.core.mail.backends.smtp.EmailBackend’

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


EMAIL_FILE_PATH

默认值:未定义

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


EMAIL_HOST

默认: ‘localhost’

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

另见EMAIL_PORT。


EMAIL_HOST_PASSWORD

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

用于定义的SMTP服务器的密码EMAIL_HOST。此设置与EMAIL_HOST_USERSMTP服务器进行身份验证时一起使用。如果这些设置中的任何一个为空,Django将不会尝试身份验证。

另见EMAIL_HOST_USER。


EMAIL_HOST_USER

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

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

另见EMAIL_HOST_PASSWORD。


EMAIL_PORT

默认: 25

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


EMAIL_SUBJECT_PREFIX

默认: '[Django] ’

使用django.core.mail.mail_admins 或发送的电子邮件的主题行前缀django.core.mail.mail_managers。您可能希望包含尾随空格。


EMAIL_USE_LOCALTIME

Django 1.11中的新功能。

默认: False

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


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_SSL或者EMAIL_USE_TLS是True,你可以选择指定路径到PEM格式的证书链文件,以用于SSL连接。


EMAIL_SSL_KEYFILE

默认: None

如果EMAIL_USE_SSL或者EMAIL_USE_TLS是True,你可以选择指定路径到PEM格式的私钥文件以用于SSL连接。

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


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

有关详情,请参阅管理文件


FIRST_DAY_OF_WEEK

默认值:( 0星期日)

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

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


FIXTURE_DIRS

默认值:( []list)

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

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

请参阅使用夹具和夹具加载提供数据。


FORCE_SCRIPT_NAME

默认: None

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


FORM_RENDERER

Django 1.11中的新功能。

默认: ‘django.forms.renderers.DjangoTemplates’

呈现窗体小部件的类。它必须实现低级渲染API。


FORMAT_MODULE_PATH

默认: None

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

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

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

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

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

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

可用格式为:

  • DATE_FORMAT
  • DATE_INPUT_FORMATS
  • DATETIME_FORMAT,
  • DATETIME_INPUT_FORMATS
  • DECIMAL_SEPARATOR
  • FIRST_DAY_OF_WEEK
  • MONTH_DAY_FORMAT
  • NUMBER_GROUPING
  • SHORT_DATE_FORMAT
  • SHORT_DATETIME_FORMAT
  • THOUSAND_SEPARATOR
  • TIME_FORMAT
  • TIME_INPUT_FORMATS
  • YEAR_MONTH_FORMAT

IGNORABLE_404_URLS

默认值:( []list)

已编译正则表达式对象的列表,描述在通过电子邮件报告HTTP 404错误时应忽略的URL(请参阅 错误报告)。匹配正则表达式 (包括查询字符串,如果有的话)。如果您的网站没有提供常用的文件,例如或,或者它被脚本小子敲打,请使用此方法。request’s full pathsfavicon.icorobots.txt

仅在 BrokenLinkEmailsMiddleware启用时使用(参见 中间件)。


INSTALLED_APPS

默认值:( []list)

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

  • 应用程序配置类(首选),或
  • 包含应用程序的包。

详细了解应用程序配置。

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

您的代码永远不应该INSTALLED_APPS直接访问。请 django.apps.apps改用。
应用程序名称和标签必须是唯一的 INSTALLED_APPS

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

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

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

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


INTERNAL_IPS

默认值:( []list)

作为字符串的IP地址列表:

允许debug()上下文处理器将一些变量添加到模板上下文中。
即使没有以员工用户身份登录,也可以使用admindocs bookmarklet。
在AdminEmailHandler电子邮件中标记为“内部”(而不是“外部”) 。


LANGUAGE_CODE

默认: ‘en-us’

表示此安装的语言代码的字符串。这应该是标准语言ID格式。例如,美国英语是"en-us"。另请参见语言标识符列表和 国际化和本地化。

USE_I18N 必须激活此设置才能生效。

它有两个目的:

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

有关更多详细信息,请参阅Django如何发现语言首选项。


LANGUAGE_COOKIE_AGE

默认值:( None在浏览器关闭时到期)

语言cookie的年龄,以秒为单位。


LANGUAGE_COOKIE_DOMAIN

默认: None

用于语言cookie的域。将其设置为字符串,例如 "example.com"跨域cookie,或None用于标准域cookie。

在生产站点上更新此设置时要小心。如果更新此设置以在以前使用标准域cookie的站点上启用跨域cookie,则不会更新具有旧域的现有用户cookie。只要这些cookie持续存在,这将导致站点用户无法切换语言。执行切换的唯一安全可靠选项是永久更改语言cookie名称(通过LANGUAGE_COOKIE_NAME设置),并添加一个中间件,将旧cookie中的值复制到新cookie,然后删除旧cookie。


LANGUAGE_COOKIE_NAME

默认: ‘django_language’

用于语言cookie的cookie的名称。这可以是您想要的任何内容(只要它与您应用程序中的其他cookie名称不同)。见国际化和本地化。


LANGUAGE_COOKIE_PATH

默认: ‘/’

语言cookie上设置的路径。这应该与Django安装的URL路径匹配,或者是该路径的父路径。

如果您在同一主机名下运行多个Django实例,这将非常有用。他们可以使用不同的cookie路径,每个实例只能看到自己的语言cookie。

在生产站点上更新此设置时要小心。如果更新此设置以使用比以前使用的更深的路径,则不会更新具有旧路径的现有用户cookie。只要这些cookie持续存在,这将导致站点用户无法切换语言。执行切换的唯一安全可靠选项是永久更改语言cookie名称(通过LANGUAGE_COOKIE_NAME设置),并添加一个中间件,将旧cookie中的值复制到新cookie,然后删除该cookie。


LANGUAGES

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

该列表的格式为二元组(列表语言代码,) -例如, 。这指定了哪些语言可用于语言选择。见 国际化和本地化。language name(‘ja’, ‘Japanese’)

通常,默认值应该足够。如果要将语言选择限制为Django提供的语言的子集,请仅设置此设置。

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

这是一个示例设置文件:

from django.utils.translation import gettext_lazy as _

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

LOCALE_PATHS

默认值:( []list)

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

例:

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

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


LOGGING

默认值:日志记录配置字典。

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

除此之外,当默认的日志记录配置阶段HTTP 500服务器错误邮件日志处理程序DEBUG是False。另见 配置日志。

您可以通过查看django/utils/log.py(或查看在线源)来查看默认日志记录配置 。


LOGGING_CONFIG

默认: ‘logging.config.dictConfig’

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

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


MANAGERS

默认值:( []list)

与格式相同的列表ADMINS,指定BrokenLinkEmailsMiddleware启用时应获取断开链接通知的人员 。


MEDIA_ROOT

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

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

例: “/var/www/example.com/media/”

另见MEDIA_URL。

警告

MEDIA_ROOT并且STATIC_ROOT必须具有不同的值。在STATIC_ROOT介绍之前,通常依赖或回退MEDIA_ROOT也提供静态文件; 但是,由于这会产生严重的安全隐患,因此需要进行验证检查以防止出现这种情况。

MEDIA_URL

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

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

如果你想用你的模板,添加 在 的选项。{{ MEDIA_URL }}‘django.template.context_processors.media’'context_processors’TEMPLATES

例: “http://media.example.com/

警告

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

MEDIA_URL并且STATIC_URL必须具有不同的值。有关MEDIA_ROOT详细信息,请参阅

MIDDLEWARE

默认: None

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


MIGRATION_MODULES

默认值:( {}空字典)

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

例:

{'blog': 'blog.db_migrations'}

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

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

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


MONTH_DAY_FORMAT

默认: ‘F j’

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

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

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

见。又见 ,, 和。allowed date format stringsDATE_FORMATDATETIME_FORMATTIME_FORMATYEAR_MONTH_FORMAT


NUMBER_GROUPING

默认: 0

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

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

一些语言环境使用非均匀数字分组,如10,00,00,000在 en_IN。对于这种情况,您可以提供一个序列,其中包含要应用的数字组大小的数量。第一个数字定义小数分隔符前面的组的大小,后面的每个数字定义前面组的大小。如果序列终止-1,则不执行进一步的分组。如果序列以a结尾0,则最后一个组大小用于该数字的剩余部分。

示例元组en_IN:

NUMBER_GROUPING = (3, 2, 0)

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

另见DECIMAL_SEPARATOR,THOUSAND_SEPARATOR和 USE_THOUSAND_SEPARATOR。

在Django 1.11中更改:
增加了对非统一数字分组的支持。

PREPEND_WWW

默认: False

是否预先添加“www。” 子域到没有它的URL。仅在CommonMiddleware安装时使用(​​参见中间件)。另见APPEND_SLASH。


ROOT_URLCONF

默认值:未定义

一个字符串,表示根URLconf的完整Python导入路径。例如: “mydjangoapps.urls”。可以通过urlconf在传入HttpRequest 对象上设置属性来基于每个请求覆盖。有关详细信息,请参阅Django如何处理一个请求。


SECRET_KEY

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

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

django-admin startproject自动SECRET_KEY为每个新项目添加随机生成的内容。

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

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

警告

保持这个价值的秘密。

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

密钥用于:

  • 如果您正在使用任何其他会话后端,或者正在使用默认 会话,则为所有会话。django.contrib.sessions.backends.cacheget_session_auth_hash()
  • 所有消息,如果您正在使用 CookieStorage或 FallbackStorage。
  • 所有PasswordResetView代币。
  • 除非提供不同的密钥,否则使用加密签名。

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

注意

settings.py创建的默认文件为方便起见创建了唯一。django-admin startprojectSECRET_KEY

SECURE_BROWSER_XSS_FILTER

默认: False

如果True,SecurityMiddleware设置X-XSS-Protection:1; mode =在尚未拥有它的所有响应上的块头。


SECURE_CONTENT_TYPE_NOSNIFF

默认: False

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


SECURE_HSTS_INCLUDE_SUBDOMAINS

默认: False

如果True,则将指令SecurityMiddleware添加includeSubDomains到HTTP Strict Transport Security 标头。除非SECURE_HSTS_SECONDS设置为非零值,否则它无效。

警告

错误地设置可能会不可逆转地(对于值 SECURE_HSTS_SECONDS)破坏您的网站。首先阅读 HTTP Strict Transport Security文档。

SECURE_HSTS_PRELOAD

Django 1.11中的新功能。

默认: False

如果True,则将指令SecurityMiddleware添加preload到HTTP Strict Transport Security 标头。除非SECURE_HSTS_SECONDS设置为非零值,否则它无效。


SECURE_HSTS_SECONDS

默认: 0

如果设置为非零整数值,则 SecurityMiddleware在尚未拥有它的所有响应上设置 HTTP Strict Transport Security标头。

警告

错误地设置这可能会不可逆转地(一段时间)破坏您的网站。首先阅读HTTP Strict Transport Security文档。

SECURE_PROXY_SSL_HEADER

默认: None

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

这需要一些解释。默认情况下,is_secure()可以通过查看请求的URL是否使用“ https:// ” 来确定请求是否安全。这对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传入的)。显然,如果您控制代理或者有其他保证它适当地设置/剥离此标头,您应该只设置此设置。

请注意,标题必须采用request.META- 所有大写字母使用的格式,并且可能以HTTP_。(请记住,'HTTP_'在使标题可用之前,Django会自动添加到x-header名称的开头request.META。)

警告

如果您在不知道自己在做什么的情况下进行设置,可能会在您的网站中打开安全漏洞。如果你不应该在你应该的时候设置它。认真。

在设置之前确保满足以下所有条件(假设上面示例中的值):

您的Django应用程序支持代理。
您的代理会X-Forwarded-Proto从所有传入请求中删除标头。换句话说,如果最终用户在其请求中包含该标头,则代理将丢弃该标头。
您的代理设置X-Forwarded-Proto标头并将其发送到Django,但仅适用于最初通过HTTPS进入的请求。
如果其中任何一个不成立,您应该将此设置设置为None 并找到另一种确定HTTPS的方法,可能通过自定义中间件。

SECURE_REDIRECT_EXEMPT

默认值:( []list)

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


SECURE_SSL_HOST

默认: None

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


SECURE_SSL_REDIRECT

默认: False

如果True,将所有非HTTPS请求重定向到HTTPS(除了那些匹配正则表达式的URL )。SecurityMiddleware SECURE_REDIRECT_EXEMPT

注意

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

SERIALIZATION_MODULES

默认值:未定义

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

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

SERVER_EMAIL

默认: ‘root@localhost’

错误消息来自的电子邮件地址,例如发送给 ADMINS和的消息MANAGERS。

为什么我的电子邮件是从不同的地址发送的?  
该地址仅用于错误消息。这是不是与定期发送电子邮件的地址send_mail() 来自; 为此,请参阅DEFAULT_FROM_EMAIL。

SHORT_DATE_FORMAT

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

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

另见DATE_FORMAT和SHORT_DATETIME_FORMAT。


SHORT_DATETIME_FORMAT

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

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

另见DATE_FORMAT和SHORT_DATE_FORMAT。


SIGNING_BACKEND

默认: ‘django.core.signing.TimestampSigner’

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

另请参阅加密签名文档。


SILENCED_SYSTEM_CHECKS

默认值:( []list)

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

另请参阅系统检查框架文档。


TEMPLATES

默认值:( []list)

包含与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

默认值:( []list)

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


APP_DIRS

默认: False

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

注意

settings.py由集创建的默认文件。django-admin startproject'APP_DIRS': True

OPTIONS

默认值:( {}空字典)

传递给模板后端的额外参数。可用参数因模板后端而异。见 DjangoTemplates和 Jinja2对内置后端的选项。


TEST_RUNNER

默认: ‘django.test.runner.DiscoverRunner’

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


TEST_NON_SERIALIZED_APPS

默认值:( []list)

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

这会减慢测试运行器的启动时间; 如果您知道的应用程序不需要此功能,则可以在此处添加其全名(例如 ‘django.contrib.contenttypes’)以将其从此序列化过程中排除。


THOUSAND_SEPARATOR

默认值:( ','逗号)

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

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

另见NUMBER_GROUPING,DECIMAL_SEPARATOR和 USE_THOUSAND_SEPARATOR。


TIME_FORMAT

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

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

另见DATE_FORMAT和DATETIME_FORMAT。


TIME_INPUT_FORMATS

默认:

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

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

当USE_L10N是True时,区域设置的规定格式具有更高的优先级,将被代替使用。

另见DATE_INPUT_FORMATS和DATETIME_INPUT_FORMATS。


TIME_ZONE

默认: ‘America/Chicago’

表示此安装的时区的字符串。查看时区列表。

注意

由于Django首次发布时TIME_ZONE设置为 'America/Chicago',所以全局设置(如果在项目中没有定义,则使用settings.py)仍然'America/Chicago'是向后兼容性。新项目模板默认为'UTC'。

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

如果USE_TZ是False,这是Django存储所有日期时间的时区。如果USE_TZ是True,这是Django会使用显示模板日期时间,并解释在表单中输入的日期时间的默认时区。

在Unix环境(time.tzset()实现的地方),Django将os.environ[‘TZ’]变量设置为 您在TIME_ZONE设置中指定的时区 。因此,您的所有视图和模型将自动在此时区中运行。然而,Django的将不设置TZ ,如果你使用手动配置选项中所描述的环境变量手动配置设置。如果Django没有设置TZ 环境变量,那么您可以确保您的进程在正确的环境中运行。

注意

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

USE_ETAGS

默认: False

一个布尔值,指定是否输出ETag标题。这样可以节省带宽,但会降低性能。这是通过使用 CommonMiddleware,并在高速缓存架构。

从版本1.11开始
不推荐使用:
不推荐使用此设置ConditionalGetMiddleware,而不管此设置如何设置ETag。

USE_I18N

默认: True

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

另见LANGUAGE_CODE,USE_L10N和USE_TZ。

注意

为方便起见,settings.py由includes 创建的默认文件。django-admin startprojectUSE_I18N = True

USE_L10N

默认: False

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

另见LANGUAGE_CODE,USE_I18N和USE_TZ。

注意

为方便起见,settings.py由includes 创建的默认文件。django-admin startprojectUSE_L10N = True

USE_THOUSAND_SEPARATOR

默认: False

一个布尔值,指定是否使用千位分隔符显示数字。当USE_L10N设置为True,如果这个也设置为 True,Django会使用的值THOUSAND_SEPARATOR,并 NUMBER_GROUPING除非语言环境已经有了一个现有的千位分隔符为数字格式。如果区域设置格式中有千位分隔符,则它将具有更高的优先级,并将替代应用。

另见DECIMAL_SEPARATOR,NUMBER_GROUPING和 THOUSAND_SEPARATOR。


USE_TZ

默认: False

一个布尔值,指定默认情况下日期时间是否为时区感知。如果设置为True,Django将在内部使用时区感知日期时间。否则,Django将在当地时间使用天真的日期时间。

另见TIME_ZONE,USE_I18N和USE_L10N。

注意

为方便起见,settings.py由includes 创建的默认文件 。django-admin startprojectUSE_TZ = True

USE_X_FORWARDED_HOST

默认: False

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

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


USE_X_FORWARDED_PORT

默认: False

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

USE_X_FORWARDED_HOST 优先于此设置。


WSGI_APPLICATION

默认: None

Django的内置服务器(例如runserver)将使用的WSGI应用程序对象的完整Python路径。该管理命令将创建一个简单的 用一个文件调用它,并指出该设置到。django-admin startprojectwsgi.pyapplicationapplication

如果未设置,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 stringsDATE_FORMATDATETIME_FORMATTIME_FORMATMONTH_DAY_FORMAT


X_FRAME_OPTIONS

默认: ‘SAMEORIGIN’

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


2.验证

设置django.contrib.auth。


AUTHENTICATION_BACKENDS

默认: [‘django.contrib.auth.backends.ModelBackend’]

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


AUTH_USER_MODEL

默认: ‘auth.User’

用于表示用户的模型。见取代了一个用户用户模型。

警告

您无法在项目的生命周期内更改AUTH_USER_MODEL设置(即,一旦您创建并迁移了依赖于它的模型),而无需认真努力。它旨在在项目开始时设置,并且它所引用的模型必须在它所在的应用程序的第一次迁移中可用。有关详细信息,请参阅取代了一个用户用户模型。

LOGIN_REDIRECT_URL

默认: ‘/accounts/profile/’

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

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

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


LOGIN_URL

默认: ‘/accounts/login/’

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

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


LOGOUT_REDIRECT_URL

默认: None

用户注销后重定向请求的URL LogoutView(如果视图未获取 next_page参数)。

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

此设置还接受命名的URL模式,可用于减少配置重复,因为您不必在两个位置(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',
]

AUTH_PASSWORD_VALIDATORS

默认值:( []list)

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


3.消息

设置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的后端 - CookieStorage和 FallbackStorage- 使用它的值SESSION_COOKIE_DOMAIN,SESSION_COOKIE_SECURE 以及SESSION_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: ''}

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


4.会话

设置django.contrib.sessions。


SESSION_CACHE_ALIAS

默认: ‘default’

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


SESSION_COOKIE_AGE

默认值:( 12096002周,以秒为单位)

会话cookie的时代,以秒为单位。


SESSION_COOKIE_DOMAIN

默认: None

用于会话cookie的域。将其设置为字符串,例如 "example.com"跨域cookie,或None用于标准域cookie。

在生产站点上更新此设置时要小心。如果更新此设置以在以前使用标准域cookie的站点上启用跨域cookie,则现有用户cookie将设置为旧域。这可能导致只要这些cookie持续存在就无法登录。

此设置也会影响设置的Cookie django.contrib.messages。


SESSION_COOKIE_HTTPONLY

默认: True

是否HTTPOnly在会话cookie上使用标志。如果设置为 True,则客户端JavaScript将无法访问会话cookie。

HTTPOnly是Set-Cookie HTTP响应头中包含的标志。它不属于用于cookie的 RFC 2109标准,并且所有浏览器都不一致。但是,当它被尊重时,它可以是一种有用的方法来降低客户端脚本访问受保护的cookie数据的风险。

启用它会使攻击者将跨站点脚本漏洞升级为完全劫持用户会话变得不那么重要。没有太多借口可以解决这个问题:如果您的代码依赖于从JavaScript读取会话cookie,那么您可能做错了。


SESSION_COOKIE_NAME

默认: ‘sessionid’

用于会话的cookie的名称。这可以是您想要的任何内容(只要它与您应用程序中的其他cookie名称不同)。


SESSION_COOKIE_PATH

默认: ‘/’

会话cookie上设置的路径。这应该与Django安装的URL路径匹配,或者是该路径的父路径。

如果您在同一主机名下运行多个Django实例,这将非常有用。他们可以使用不同的cookie路径,每个实例只能看到自己的会话cookie。


SESSION_COOKIE_SECURE

默认: False

是否为会话cookie使用安全cookie。如果设置为 True,则cookie将被标记为“安全”,这意味着浏览器可以确保cookie仅在HTTPS连接下发送。

因为如果会话cookie未加密地发送,数据包嗅探器(例如Firesheep)劫持用户的会话是微不足道的,所以没有任何好借口可以将其关闭。它会阻止你在不安全的请求上使用会话,这是一件好事。


SESSION_ENGINE

默认: ‘django.contrib.sessions.backends.db’

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

  • ‘django.contrib.sessions.backends.db’
  • ‘django.contrib.sessions.backends.file’
  • ‘django.contrib.sessions.backends.cache’
  • ‘django.contrib.sessions.backends.cached_db’
  • ‘django.contrib.sessions.backends.signed_cookies’

有关详细信息,请参阅配置会话引擎。


SESSION_EXPIRE_AT_BROWSER_CLOSE

默认: False

是否在用户关闭浏览器时使会话到期。请参阅 浏览器长度会话与持久会话。


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。


5.网站

设置django.contrib.sites。


SITE_ID

默认值:未定义

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


6.静态文件

设置django.contrib.staticfiles。


STATIC_ROOT

默认: None

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

例: “/var/www/example.com/static/”

如果启用了staticfiles contrib app(如在默认项目模板中),则collectstaticmanagement命令将静态文件收集到此目录中。有关使用的更多详细信息,请参阅有关 管理静态文件的方法。

警告

这应该是一个最初为空的目标目录,用于将静态文件从其永久位置收集到一个目录中,以便于部署;
它不是永久存储静态文件的地方。您应该在staticfiles的 目录中执行finders此操作,
默认情况下,这些'static/'目录是 app子目录和您包含的任何目录 STATICFILES_DIRS。

STATIC_URL

默认: None

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

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

如果没有None,这将用作资产定义(Media类)和 staticfiles应用程序的基本路径 。

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

您可能需要将这些文件配置为在开发中提供,并且肯定需要在生产中执行此操作 。


STATICFILES_DIRS

默认值:( []list)

如果FileSystemFinder启用了查找程序,此设置将定义staticfiles应用程序将遍历的其他位置,例如,如果您使用 collectstatic或findstatic管理命令或使用静态文件服务视图。

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

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

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


前缀(可选)

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

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

例如,假设您已STATIC_URL设置为’/static/’,则 collectstatic管理命令将收集“stats”文件的’downloads’子目录STATIC_ROOT。

这将允许你指的是本地文件 '/opt/webfiles/stats/polls_20101022.tar.gz’与 '/static/downloads/polls_20101022.tar.gz’在您的模板,例如:

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

STATICFILES_STORAGE¶
默认: ‘django.contrib.staticfiles.storage.StaticFilesStorage’

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

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

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


STATICFILES_FINDERS

默认:

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

查找后端列表,了解如何在不同位置查找静态文件。

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

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

注意

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

静态文件查找器当前被认为是专用接口,因此该接口未被记录。

猜你喜欢

转载自blog.csdn.net/lichangrui2009/article/details/86487346