Настройки
- Основные настройки
- Аутентификация
- Сообщения
- Сеансы
- Сайты
- Статические файлы
- Тематический указатель основных настроек
Предупреждение
Будьте осторожны при переопределении настроек, особенно если значение по умолчанию — непустой список или словарь, например STATICFILES_FINDERS. Убедитесь, что вы сохраняете компоненты, необходимые для используемых вами функций Django.
Основные настройки
Ниже приведен список настроек, доступных в ядре Django, и их значений по умолчанию. Настройки, предоставляемые приложениями contrib, перечислены ниже, за ними следует тематический указатель основных настроек. Вводные материалы см. в руководстве по настройкам.
ABSOLUTE_URL_OVERRIDES
По умолчанию: {} (пустой словарь)
Словарь, сопоставляющий строки "app_label.model_name" функциям, которые принимают объект модели и возвращают его URL. Это способ добавления или переопределения методов get_absolute_url() отдельно для каждой установки. Пример:
ABSOLUTE_URL_OVERRIDES = {
"blogs.blog": lambda o: "/blogs/%s/" % o.slug,
"news.story": lambda o: "/stories/%s/%s/" % (o.pub_year, o.slug),
}
Имя модели, используемое в этой настройке, должно быть записано строчными буквами независимо от регистра букв в имени фактического класса модели.
ADMINS
По умолчанию: [] (пустой список)
Список всех людей, которым отправляются уведомления об ошибках в коде. Когда DEBUG=False и AdminEmailHandler настроен в LOGGING (настроено по умолчанию), Django отправляет этим людям по электронной почте сведения об исключениях, возникших в цикле обработки запроса и ответа.
Каждый элемент списка должен быть строкой с адресом электронной почты. Пример:
ADMINS = ["john@example.com", '"Ng, Mary" <mary@example.com>']
В более ранних версиях требовался список кортежей (имя, адрес).
ALLOWED_HOSTS
По умолчанию: [] (пустой список)
Список строк с именами хостов/доменов, которые может обслуживать этот сайт Django. Это мера безопасности, предотвращающая атаки через HTTP-заголовок Host, возможные даже при многих внешне безопасных конфигурациях веб-сервера.
Значения в этом списке могут быть полными именами (например, '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.
Если DEBUG имеет значение True, а ALLOWED_HOSTS пуст, хост проверяется на соответствие ['.localhost', '127.0.0.1', '[::1]'].
Настройка ALLOWED_HOSTS также проверяется при запуске тестов.
Эта проверка выполняется только через get_host(); если ваш код обращается непосредственно к заголовку Host из request.META, вы обходите эту защиту.
APPEND_SLASH
По умолчанию: True
Если установлено значение True, URL запроса не соответствует ни одному шаблону в URLconf и не заканчивается косой чертой, выполняется перенаправление HTTP на тот же URL с добавленной косой чертой. Обратите внимание, что при перенаправлении могут быть потеряны данные, отправленные в запросе POST.
Настройка APPEND_SLASH используется только в том случае, если установлено CommonMiddleware (см. промежуточное ПО). См. также PREPEND_WWW.
CACHES
По умолчанию:
{
"default": {
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
}
}
Словарь, содержащий настройки всех кэшей, используемых Django. Это вложенный словарь, содержимое которого сопоставляет псевдонимы кэшей со словарями, содержащими параметры отдельных кэшей.
Настройка CACHES должна конфигурировать кэш default; также можно указать любое количество дополнительных кэшей. Если вы используете серверную часть кэша, отличную от локального кэша в памяти, или вам нужно определить несколько кэшей, потребуются другие параметры. Доступны следующие параметры кэша.
BACKEND
По умолчанию: '' (пустая строка)
Используемая серверная часть кэша. Встроенные серверные части кэша:
'django.core.cache.backends.db.DatabaseCache''django.core.cache.backends.dummy.DummyCache''django.core.cache.backends.filebased.FileBasedCache''django.core.cache.backends.locmem.LocMemCache''django.core.cache.backends.memcached.PyMemcacheCache''django.core.cache.backends.memcached.PyLibMCCache''django.core.cache.backends.redis.RedisCache'
Можно использовать серверную часть кэша, не входящую в состав Django, задав для BACKEND полный путь к классу серверной части кэша (например, mypackage.backends.whatever.WhateverCache).
KEY_FUNCTION
Строка с путем через точки к функции (или любому вызываемому объекту), которая определяет, как объединить префикс, версию и ключ в итоговый ключ кэша. Реализация по умолчанию эквивалентна следующей функции:
def make_key(key, key_prefix, version):
return ":".join([key_prefix, str(version), key])
Можно использовать любую функцию формирования ключа, если у нее такая же сигнатура аргументов.
Подробнее см. в документации по кэшированию.
KEY_PREFIX
По умолчанию: '' (пустая строка)
Строка, которая автоматически добавляется (по умолчанию в начало) ко всем ключам кэша, используемым сервером Django.
Подробнее см. в документации по кэшированию.
LOCATION
По умолчанию: '' (пустая строка)
Расположение используемого кэша. Это может быть каталог для файлового кэша, хост и порт сервера memcache или идентифицирующее имя локального кэша в памяти. Например:
CACHES = {
"default": {
"BACKEND": "django.core.cache.backends.filebased.FileBasedCache",
"LOCATION": "/var/tmp/django_cache",
}
}
OPTIONS
По умолчанию: None
Дополнительные параметры, передаваемые серверной части кэша. Доступные параметры зависят от используемой серверной части кэша.
Сведения о доступных параметрах можно найти в документации по аргументам кэша. Дополнительную информацию см. в документации соответствующего модуля серверной части.
TIMEOUT
По умолчанию: 300
Количество секунд, по истечении которых запись кэша считается устаревшей. Если значение этой настройки равно None, срок действия записей кэша не истекает. Значение 0 приводит к немедленному истечению срока действия ключей (то есть кэширование фактически отключается).
VERSION
По умолчанию: 1
Номер версии по умолчанию для ключей кэша, создаваемых сервером Django.
Подробнее см. в документации по кэшированию.
CACHE_MIDDLEWARE_ALIAS
По умолчанию: 'default'
Подключение кэша, используемое промежуточным ПО кэширования.
CACHE_MIDDLEWARE_KEY_PREFIX
По умолчанию: '' (пустая строка)
Строка, добавляемая в начало ключей кэша, создаваемых промежуточным ПО кэширования. Этот префикс объединяется с настройкой KEY_PREFIX, а не заменяет ее.
CACHE_MIDDLEWARE_SECONDS
По умолчанию: 600
Целое число — количество секунд, в течение которых промежуточное ПО кэширования будет кэшировать страницу по умолчанию.
CSRF_USE_SESSIONS
По умолчанию: False
Следует ли хранить CSRF-токен в сеансе пользователя вместо файла cookie. Для этого требуется использовать django.contrib.sessions.
Хранить CSRF-токен в файле cookie (значение по умолчанию в Django) безопасно, однако в других веб-фреймворках распространено хранение токена в сеансе, поэтому аудиторы безопасности иногда требуют именно такой подход.
Поскольку представления ошибок по умолчанию требуют CSRF-токен, SessionMiddleware должно располагаться в MIDDLEWARE перед любым промежуточным ПО, которое может вызвать исключение и запустить представление ошибки (например, PermissionDenied), если вы используете CSRF_USE_SESSIONS. См. порядок промежуточного ПО.
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
По умолчанию: [] (пустой список)
Список доверенных источников для небезопасных запросов (например, POST).
Для запросов, содержащих заголовок Origin, защита Django от CSRF требует, чтобы этот заголовок соответствовал источнику, указанному в заголовке Host.
Для небезопасного запроса secure, не содержащего заголовок Origin, запрос должен иметь заголовок Referer, соответствующий источнику, указанному в заголовке Host.
Эти проверки предотвращают, например, успешное выполнение запроса POST с subdomain.example.com к api.example.com. Если вам нужны междоменные небезопасные запросы, продолжая этот пример, добавьте 'https://subdomain.example.com' в этот список (и/или http://..., если запросы поступают с незащищенной страницы).
Настройка также поддерживает поддомены, поэтому, например, можно добавить 'https://*.example.com', чтобы разрешить доступ со всех поддоменов example.com.
DATABASES
По умолчанию: {} (пустой словарь)
Словарь, содержащий настройки всех баз данных, используемых в Django. Это вложенный словарь, в котором каждому псевдониму базы данных соответствует словарь с параметрами отдельной базы данных.
Настройка DATABASES должна задавать базу данных default; также можно указать любое количество дополнительных баз данных.
Самый простой файл настроек предназначен для конфигурации с одной базой данных SQLite. Его можно настроить следующим образом:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": "mydatabase",
}
}
Для подключения к другим серверным системам баз данных, таким как MariaDB, 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'
Можно использовать серверную систему базы данных, не входящую в состав Django, указав в ENGINE полный путь к ней (например, mypackage.backends.whatever).
HOST
По умолчанию: '' (пустая строка)
Хост, используемый для подключения к базе данных. Пустая строка означает localhost. Не используется с SQLite.
Если это значение начинается с косой черты ('/') и вы используете MySQL, MySQL подключится к указанному сокету через сокет Unix. Например:
"HOST": "/var/run/mysql"
Если вы используете MySQL и это значение не начинается с косой черты, оно считается именем хоста.
При использовании PostgreSQL по умолчанию (пустое значение HOST) подключение к базе данных выполняется через доменные сокеты UNIX (строки «local» в pg_hba.conf). Если ваш доменный сокет UNIX расположен не в стандартном месте, используйте то же значение unix_socket_directory, что и в postgresql.conf. Для подключения через сокеты TCP задайте для HOST значение «localhost» или «127.0.0.1» (строки «host» в pg_hba.conf). В Windows всегда следует задавать HOST, поскольку доменные сокеты UNIX недоступны.
NAME
По умолчанию: '' (пустая строка)
Имя используемой базы данных. Для SQLite это полный путь к файлу базы данных. При указании пути всегда используйте косые черты, даже в Windows (например, C:/homes/user/mysite/sqlite3.db).
CONN_MAX_AGE
По умолчанию: 0
Срок жизни подключения к базе данных в секундах. Используйте 0, чтобы закрывать подключения к базе данных в конце каждого запроса — так Django работал раньше, — и None для неограниченного срока действия постоянных подключений к базе данных.
CONN_HEALTH_CHECKS
По умолчанию: False
Если установлено значение True, перед повторным использованием существующих постоянных подключений к базе данных в каждом запросе, обращающемся к базе данных, будет выполняться проверка их работоспособности. Если проверка не пройдёт, подключение будет восстановлено без ошибки запроса, когда прежнее подключение уже нельзя использовать, но сервер базы данных готов принимать и обслуживать новые подключения (например, после перезапуска сервера базы данных, закрывшего существующие подключения).
OPTIONS
По умолчанию: {} (пустой словарь)
Дополнительные параметры подключения к базе данных. Доступные параметры зависят от используемой серверной системы базы данных.
Некоторые сведения о доступных параметрах приведены в документации Серверные системы баз данных. Дополнительную информацию см. в документации соответствующего модуля.
PASSWORD
По умолчанию: '' (пустая строка)
Пароль для подключения к базе данных. Не используется с SQLite.
PORT
По умолчанию: '' (пустая строка)
Порт для подключения к базе данных. Пустая строка означает порт по умолчанию. Не используется с SQLite.
TIME_ZONE
По умолчанию: None
Строка, задающая часовой пояс для этого подключения к базе данных, или None. Этот дополнительный параметр настройки DATABASES принимает те же значения, что и общая настройка TIME_ZONE.
Если USE_TZ имеет значение True, при чтении даты и времени из базы данных возвращаются значения с часовым поясом, заданным этим параметром, если он не равен None, а в противном случае — с часовым поясом UTC.
Если USE_TZ имеет значение False, задавать этот параметр нельзя.
-
Если серверная система базы данных не поддерживает часовые пояса (например, SQLite, MySQL, Oracle), Django считывает и записывает дату и время по местному времени, если этот параметр задан, и по UTC, если он не задан.
Изменение часового пояса подключения меняет способ чтения и записи даты и времени в базе данных.
- Если Django управляет базой данных и у вас нет веских причин поступать иначе, оставьте этот параметр незаданным. Лучше хранить дату и время в UTC: это позволяет избежать неоднозначных или несуществующих значений времени при переходе на летнее время. Кроме того, получение даты и времени в UTC упрощает вычисления — не нужно учитывать возможное изменение смещения при переходе на летнее время.
- Если вы подключаетесь к сторонней базе данных, в которой дата и время хранятся по местному времени, а не по UTC, необходимо задать для этого параметра соответствующий часовой пояс. Аналогично, если Django управляет базой данных, но сторонние системы подключаются к той же базе данных и ожидают увидеть дату и время по местному времени, необходимо задать этот параметр.
-
Если серверная система базы данных поддерживает часовые пояса (например, PostgreSQL), для подключения к базе данных устанавливается этот часовой пояс.
Хотя параметр
TIME_ZONEтребуется задавать крайне редко, бывают ситуации, когда это необходимо. В частности, при выполнении необработанных запросов с функциями даты и времени, такими какdate_trunc()илиgenerate_series()в PostgreSQL, рекомендуется использовать то же значение, что и в общей настройкеTIME_ZONE, особенно при создании временных рядов, пересекающих переход на летнее время.Это значение можно изменить в любое время: база данных выполнит преобразование даты и времени в заданный часовой пояс.
Однако у этого есть недостаток: получение всех значений даты и времени по местному времени усложняет вычисления — необходимо учитывать возможные изменения смещения при переходе на летнее время.
Вместо задания параметра
TIME_ZONEрассмотрите возможность явного преобразования в местное время с помощьюAT TIME ZONEв необработанных SQL-запросах.
DISABLE_SERVER_SIDE_CURSORS
По умолчанию: False
Установите значение True, если хотите отключить использование курсоров на стороне сервера в QuerySet.iterator(). В разделе Пулинг транзакций и курсоры на стороне сервера описан соответствующий сценарий использования.
Эта настройка предназначена только для PostgreSQL.
USER
По умолчанию: '' (пустая строка)
Имя пользователя для подключения к базе данных. Не используется с SQLite.
TEST
По умолчанию: {} (пустой словарь)
Словарь настроек тестовых баз данных. Подробные сведения о создании и использовании тестовых баз данных см. в разделе Тестовая база данных.
Пример конфигурации тестовой базы данных:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"USER": "mydatabaseuser",
"NAME": "mydatabase",
"TEST": {
"NAME": "mytestdatabase",
},
},
}
Доступны следующие ключи словаря TEST:
CHARSET
По умолчанию: None
Кодировка символов, используемая при создании тестовой базы данных. Значение этой строки передаётся непосредственно базе данных, поэтому её формат зависит от серверной системы.
Поддерживается серверными системами PostgreSQL (postgresql) и MySQL (mysql).
COLLATION
По умолчанию: None
Порядок сортировки, используемый при создании тестовой базы данных. Это значение передаётся непосредственно серверной системе, поэтому его формат зависит от неё.
Поддерживается только серверной системой mysql (подробности см. в руководстве по MySQL).
DEPENDENCIES
По умолчанию: ['default'] для всех баз данных, кроме default, у которой нет зависимостей.
Зависимости, определяющие порядок создания базы данных. Подробности см. в документации о управлении порядком создания тестовых баз данных.
MIGRATE
По умолчанию: True
Если установлено значение False, миграции не будут запускаться при создании тестовой базы данных. Это аналогично заданию значения None в настройке MIGRATION_MODULES, но применяется ко всем приложениям.
MIRROR
По умолчанию: None
Псевдоним базы данных, зеркалом которой должна быть эта база данных во время тестирования. Настройка зависит от транзакций, поэтому её необходимо использовать с TransactionTestCase, а не с TestCase.
Эта настройка позволяет тестировать конфигурации с основной базой данных и репликами (в некоторых базах данных их называют master/slave), состоящие из нескольких баз данных. Подробности см. в документации о тестировании конфигураций с основной базой данных и репликами.
NAME
По умолчанию: None
Имя базы данных, используемой при запуске набора тестов.
Если для базы данных SQLite используется значение по умолчанию (None), тесты будут работать с базой данных в памяти. Для всех остальных систем баз данных тестовая база данных будет называться 'test_' + DATABASE_NAME.
См. раздел Тестовая база данных.
TEMPLATE
Эта настройка предназначена только для PostgreSQL.
Имя шаблона (например, 'template0'), на основе которого создаётся тестовая база данных.
CREATE_DB
По умолчанию: True
Эта настройка предназначена только для Oracle.
Если задано значение False, табличные пространства для тестов не будут автоматически создаваться перед началом тестов и удаляться по их завершении.
CREATE_USER
По умолчанию: True
Эта настройка предназначена только для Oracle.
Если задано значение False, тестовый пользователь не будет автоматически создаваться перед началом тестов и удаляться по их завершении.
USER
По умолчанию: None
Эта настройка предназначена только для Oracle.
Имя пользователя для подключения к базе данных Oracle, используемой при запуске тестов. Если значение не указано, Django будет использовать 'test_' + USER.
PASSWORD
По умолчанию: None
Эта настройка предназначена только для Oracle.
Пароль для подключения к базе данных Oracle, используемой при запуске тестов. Если значение не указано, Django сгенерирует случайный пароль.
ORACLE_MANAGED_FILES
По умолчанию: False
Эта настройка предназначена только для Oracle.
Если задано значение True, будут использоваться табличные пространства Oracle Managed Files (OMF). Настройки DATAFILE и DATAFILE_TMP будут проигнорированы.
TBLSPACE
По умолчанию: None
Эта настройка предназначена только для Oracle.
Имя табличного пространства, используемого при запуске тестов. Если значение не указано, Django будет использовать 'test_' + USER.
TBLSPACE_TMP
По умолчанию: None
Эта настройка предназначена только для Oracle.
Имя временного табличного пространства, используемого при запуске тестов. Если значение не указано, Django будет использовать 'test_' + USER + '_temp'.
DATAFILE
По умолчанию: None
Эта настройка предназначена только для Oracle.
Имя файла данных для TBLSPACE. Если значение не указано, Django будет использовать TBLSPACE + '.dbf'.
DATAFILE_TMP
По умолчанию: None
Эта настройка предназначена только для Oracle.
Имя файла данных для TBLSPACE_TMP. Если значение не указано, Django будет использовать TBLSPACE_TMP + '.dbf'.
DATAFILE_MAXSIZE
По умолчанию: '500M'
Эта настройка предназначена только для Oracle.
Максимальный размер, до которого может вырасти DATAFILE.
DATAFILE_TMP_MAXSIZE
По умолчанию: '500M'
Эта настройка предназначена только для Oracle.
Максимальный размер, до которого может вырасти DATAFILE_TMP.
DATAFILE_SIZE
По умолчанию: '50M'
Эта настройка предназначена только для Oracle.
Начальный размер DATAFILE.
DATAFILE_TMP_SIZE
По умолчанию: '50M'
Эта настройка предназначена только для Oracle.
Начальный размер DATAFILE_TMP.
DATAFILE_EXTSIZE
По умолчанию: '25M'
Эта настройка предназначена только для Oracle.
Размер увеличения DATAFILE при необходимости дополнительного пространства.
DATAFILE_TMP_EXTSIZE
По умолчанию: '25M'
Эта настройка предназначена только для Oracle.
Размер увеличения DATAFILE_TMP при необходимости дополнительного пространства.
DATA_UPLOAD_MAX_MEMORY_SIZE
По умолчанию: 2621440 (то есть 2,5 МБ).
Максимальный размер тела запроса в байтах. Если он превышен, возникает исключение SuspiciousOperation (RequestDataTooBig). Проверка выполняется при обращении к request.body или request.POST; при расчёте учитывается общий размер запроса без данных загружаемых файлов. Чтобы отключить проверку, можно задать значение None. Приложениям, ожидающим необычно большие отправки форм, следует настроить этот параметр.
Объём данных запроса связан с объёмом памяти, необходимым для его обработки и заполнения словарей GET и POST. Если не ограничивать размер запросов, их можно использовать для атаки типа «отказ в обслуживании». Поскольку веб-серверы обычно не выполняют углублённую проверку запросов, аналогичную проверку на этом уровне провести невозможно.
См. также FILE_UPLOAD_MAX_MEMORY_SIZE.
DATA_UPLOAD_MAX_NUMBER_FIELDS
По умолчанию: 1000
Максимальное количество параметров, которые можно получить через GET или POST. Если оно превышено, возникает исключение SuspiciousOperation (TooManyFields). Чтобы отключить проверку, можно задать значение None. Приложениям, ожидающим необычно большое количество полей формы, следует настроить этот параметр.
Количество параметров запроса связано со временем, необходимым для его обработки и заполнения словарей GET и POST. Если не ограничивать размер запросов, их можно использовать для атаки типа «отказ в обслуживании». Поскольку веб-серверы обычно не выполняют углублённую проверку запросов, аналогичную проверку на этом уровне провести невозможно.
DATA_UPLOAD_MAX_NUMBER_FILES
По умолчанию: 100
Максимальное количество файлов, которые можно получить через POST в запросе с кодировкой multipart/form-data. Если оно превышено, возникает исключение SuspiciousOperation (TooManyFiles). Чтобы отключить проверку, можно задать значение None. Приложениям, ожидающим необычно большое количество файловых полей, следует настроить этот параметр.
Количество принимаемых файлов связано со временем и объёмом памяти, необходимыми для обработки запроса. Если не ограничивать размер запросов, их можно использовать для атаки типа «отказ в обслуживании». Поскольку веб-серверы обычно не выполняют углублённую проверку запросов, аналогичную проверку на этом уровне провести невозможно.
DATABASE_ROUTERS
По умолчанию: [] (пустой список)
Список маршрутизаторов, определяющих, какую базу данных использовать при выполнении запроса к базе данных.
См. документацию об автоматической маршрутизации баз данных в конфигурациях с несколькими базами данных.
DATE_FORMAT
По умолчанию: 'N j, Y' (например, Feb. 4, 2003)
Формат по умолчанию для отображения полей даты в любой части системы. Обратите внимание: формат, заданный для текущей локали, имеет более высокий приоритет и будет использоваться вместо него. См. allowed date format strings.
См. также DATETIME_FORMAT, TIME_FORMAT и SHORT_DATE_FORMAT.
DATE_INPUT_FORMATS
По умолчанию:
[
"%Y-%m-%d", # '2006-10-25'
"%m/%d/%Y", # '10/25/2006'
"%m/%d/%y", # '10/25/06'
"%b %d %Y", # 'Oct 25 2006'
"%b %d, %Y", # 'Oct 25, 2006'
"%d %b %Y", # '25 Oct 2006'
"%d %b, %Y", # '25 Oct, 2006'
"%B %d %Y", # 'October 25 2006'
"%B %d, %Y", # 'October 25, 2006'
"%d %B %Y", # '25 October 2006'
"%d %B, %Y", # '25 October, 2006'
]
Список форматов, принимаемых при вводе данных в поле даты. Форматы проверяются по порядку; используется первый подходящий. Обратите внимание: в этих строках формата применяется синтаксис модуля datetime Python, а не строки формата фильтра шаблонов date.
Формат, заданный для текущей локали, имеет более высокий приоритет и будет использоваться вместо него.
См. также DATETIME_INPUT_FORMATS и TIME_INPUT_FORMATS.
DATETIME_FORMAT
По умолчанию: 'N j, Y, P' (например, Feb. 4, 2003, 4 p.m.)
Формат по умолчанию для отображения полей даты и времени в любой части системы. Обратите внимание: формат, заданный для текущей локали, имеет более высокий приоритет и будет использоваться вместо него. См. allowed date format strings.
См. также DATE_FORMAT, TIME_FORMAT и SHORT_DATETIME_FORMAT.
DATETIME_INPUT_FORMATS
По умолчанию:
[
"%Y-%m-%d %H:%M:%S", # '2006-10-25 14:30:59'
"%Y-%m-%d %H:%M:%S.%f", # '2006-10-25 14:30:59.000200'
"%Y-%m-%d %H:%M", # '2006-10-25 14:30'
"%m/%d/%Y %H:%M:%S", # '10/25/2006 14:30:59'
"%m/%d/%Y %H:%M:%S.%f", # '10/25/2006 14:30:59.000200'
"%m/%d/%Y %H:%M", # '10/25/2006 14:30'
"%m/%d/%y %H:%M:%S", # '10/25/06 14:30:59'
"%m/%d/%y %H:%M:%S.%f", # '10/25/06 14:30:59.000200'
"%m/%d/%y %H:%M", # '10/25/06 14:30'
]
Список форматов, принимаемых при вводе данных в поле даты и времени. Форматы проверяются по порядку; используется первый подходящий. Обратите внимание: в этих строках формата применяется синтаксис модуля datetime Python, а не строки формата фильтра шаблонов date. Форматы только для даты не включены, поскольку поля даты и времени в крайнем случае автоматически используют DATE_INPUT_FORMATS.
Формат, заданный для текущей локали, имеет более высокий приоритет и будет использоваться вместо него.
См. также DATE_INPUT_FORMATS и TIME_INPUT_FORMATS.
DEBUG
По умолчанию: False
Логическое значение, включающее или отключающее режим отладки.
Никогда не развёртывайте сайт в рабочей среде с включённой настройкой 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. В противном случае на все запросы будет возвращён ответ «Bad Request (400)».
Примечание
Файл settings.py, создаваемый командой django-admin
startproject по умолчанию, для удобства задаёт значение DEBUG = True.
DEBUG_PROPAGATE_EXCEPTIONS
По умолчанию: False
Если задано значение True, Django пропускает обработку исключений функций представлений (handler500 или отладочное представление, если DEBUG имеет значение True) и регистрацию ответов с кодом 500 (django.request); исключения передаются выше по стеку вызовов.
Это может быть полезно в некоторых конфигурациях тестирования. Не следует использовать эту настройку на работающем сайте, если только вы не хотите, чтобы ответы «Internal Server Error» формировал веб-сервер, а не Django. В этом случае убедитесь, что сервер не показывает в ответе трассировку стека и другие конфиденциальные сведения.
DECIMAL_SEPARATOR
По умолчанию: '.' (точка)
Разделитель десятичной части, используемый по умолчанию при форматировании десятичных чисел.
Обратите внимание: формат, заданный локалью, имеет более высокий приоритет и будет применен вместо него.
См. также NUMBER_GROUPING, THOUSAND_SEPARATOR и USE_THOUSAND_SEPARATOR.
DEFAULT_AUTO_FIELD
По умолчанию: 'django.db.models.BigAutoField'
Тип поля первичного ключа по умолчанию для моделей, в которых нет поля с параметром primary_key=True.
В более ранних версиях значением по умолчанию является django.db.models.AutoField.
DEFAULT_CHARSET
По умолчанию: 'utf-8'
Кодировка по умолчанию для всех объектов HttpResponse, если тип MIME не указан вручную. Используется при формировании заголовка Content-Type.
DEFAULT_EXCEPTION_REPORTER
По умолчанию: 'django.views.debug.ExceptionReporter'
Класс средства формирования отчетов об исключениях по умолчанию, используемый, если он еще не назначен экземпляру HttpRequest. См. раздел Пользовательские отчеты об ошибках.
DEFAULT_EXCEPTION_REPORTER_FILTER
По умолчанию: 'django.views.debug.SafeExceptionReporterFilter'
Класс фильтра средства формирования отчетов об исключениях по умолчанию, используемый, если он еще не назначен экземпляру HttpRequest. См. раздел Фильтрация отчетов об ошибках.
DEFAULT_FROM_EMAIL
По умолчанию: 'webmaster@localhost'
Адрес электронной почты по умолчанию для автоматической переписки от имени администратора сайта. Этот адрес используется в заголовке From: исходящих писем и может быть указан в любом формате, допустимом для выбранного протокола отправки почты.
Это не влияет на сообщения об ошибках, отправляемые адресатам ADMINS и MANAGERS. Для этого см. SERVER_EMAIL.
DEFAULT_INDEX_TABLESPACE
По умолчанию: '' (пустая строка)
Пространство таблиц по умолчанию для индексов полей, для которых оно не указано, если поддерживается серверной частью (см. раздел Пространства таблиц).
DEFAULT_TABLESPACE
По умолчанию: '' (пустая строка)
Пространство таблиц по умолчанию для моделей, для которых оно не указано, если поддерживается серверной частью (см. раздел Пространства таблиц).
DISALLOWED_USER_AGENTS
По умолчанию: [] (пустой список)
Список скомпилированных объектов регулярных выражений, соответствующих строкам User-Agent, которым запрещено посещать любые страницы сайта. Используйте этот параметр для ботов и поисковых роботов. Он используется только при установленном CommonMiddleware (см. раздел Промежуточное ПО).
EMAIL_BACKEND
По умолчанию: 'django.core.mail.backends.smtp.EmailBackend'
Серверная часть для отправки электронных писем. Список доступных серверных частей см. в разделе Серверные части электронной почты.
EMAIL_FILE_PATH
По умолчанию: не задано
Каталог, используемый файловой серверной частью электронной почты для хранения выходных файлов.
EMAIL_HOST
По умолчанию: 'localhost'
Узел, используемый для отправки электронной почты.
См. также EMAIL_PORT.
EMAIL_HOST_PASSWORD
По умолчанию: '' (пустая строка)
Пароль для SMTP-сервера, заданного в EMAIL_HOST. Этот параметр используется вместе с EMAIL_HOST_USER для аутентификации на SMTP-сервере. Если один из этих параметров не задан, Django не будет пытаться выполнить аутентификацию.
См. также EMAIL_HOST_USER.
EMAIL_HOST_USER
По умолчанию: '' (пустая строка)
Имя пользователя для SMTP-сервера, заданного в EMAIL_HOST. Если оно не задано, Django не будет пытаться выполнить аутентификацию.
См. также EMAIL_HOST_PASSWORD.
EMAIL_PORT
По умолчанию: 25
Порт SMTP-сервера, заданного в EMAIL_HOST.
EMAIL_SUBJECT_PREFIX
По умолчанию: '[Django] '
Префикс темы писем, отправляемых с помощью django.core.mail.mail_admins или django.core.mail.mail_managers. Скорее всего, вам понадобится добавить пробел в конце.
EMAIL_USE_LOCALTIME
По умолчанию: False
Определяет, нужно ли указывать заголовок SMTP Date в сообщениях электронной почты в местном часовом поясе (True) или в UTC (False).
EMAIL_USE_TLS
По умолчанию: False
Определяет, следует ли использовать TLS-соединение (защищенное соединение) при взаимодействии с SMTP-сервером. Этот параметр используется для явных TLS-соединений, обычно через порт 587. Если соединение зависает, см. параметр неявного TLS EMAIL_USE_SSL.
EMAIL_USE_SSL
По умолчанию: False
Определяет, следует ли использовать неявное TLS-соединение (защищенное соединение) при взаимодействии с SMTP-сервером. В большинстве руководств по электронной почте этот тип 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 и для защищенного соединения с SMTP-сервером требуется аутентификация клиента, укажите с помощью этого параметра путь к файлу цепочки сертификатов в формате PEM. Его необходимо использовать вместе с EMAIL_SSL_KEYFILE.
Не следует использовать EMAIL_SSL_CERTFILE с самоподписанным сертификатом сервера или сертификатом от частного центра сертификации (CA). В таких случаях сертификат сервера (или корневой сертификат частного CA) следует установить в системное хранилище CA. Это можно сделать, следуя инструкциям для конкретной платформы по установке корневого сертификата CA, или использовать переменные среды OpenSSL SSL_CERT_FILE либо SSL_CERT_DIR для указания пользовательского хранилища сертификатов (если изменение системного хранилища невозможно или нежелательно).
Для более сложных сценариев можно унаследовать SMTP-класс EmailBackend и добавить корневые сертификаты в его ssl_context с помощью ssl.SSLContext.load_verify_locations().
EMAIL_SSL_KEYFILE
По умолчанию: None
Если для EMAIL_USE_SSL или EMAIL_USE_TLS задано значение True, можно дополнительно указать путь к файлу закрытого ключа в формате PEM для аутентификации клиента при SSL-соединении. Используйте его вместе с EMAIL_SSL_CERTFILE.
Обратите внимание: установка EMAIL_SSL_CERTFILE и EMAIL_SSL_KEYFILE не приводит к проверке сертификата. Эти значения передаются базовому SSL-соединению. Подробную информацию об обработке файла цепочки сертификатов и файла закрытого ключа см. в документации к функции ssl.SSLContext.wrap_socket() из Python.
EMAIL_TIMEOUT
По умолчанию: None
Задает время ожидания в секундах для блокирующих операций, например попытки подключения.
FILE_UPLOAD_HANDLERS
По умолчанию:
[
"django.core.files.uploadhandler.MemoryFileUploadHandler",
"django.core.files.uploadhandler.TemporaryFileUploadHandler",
]
Список обработчиков для загрузки файлов. Изменение этого параметра позволяет полностью настроить или даже заменить процесс загрузки файлов в Django.
Подробности см. в разделе Управление файлами.
FILE_UPLOAD_MAX_MEMORY_SIZE
По умолчанию: 2621440 (т. е. 2,5 МБ).
Максимальный размер (в байтах), до достижения которого загруженный файл хранится в памяти, прежде чем его содержимое начнет передаваться в файловую систему. Подробности см. в разделе Управление файлами.
См. также DATA_UPLOAD_MAX_MEMORY_SIZE.
FILE_UPLOAD_DIRECTORY_PERMISSIONS
По умолчанию: None
Числовой режим доступа для каталогов, создаваемых в процессе загрузки файлов.
Этот параметр также задает разрешения по умолчанию для собранных каталогов статических файлов при использовании команды управления collectstatic. Подробнее о том, как переопределить это значение, см. в разделе collectstatic.
Этот параметр работает аналогично параметру FILE_UPLOAD_PERMISSIONS и имеет те же ограничения.
FILE_UPLOAD_PERMISSIONS
По умолчанию: 0o644
Числовой режим (т. е. 0o644), устанавливаемый для недавно загруженных файлов. Подробнее о значении этих режимов см. в документации к os.chmod().
Если задано значение None, поведение зависит от операционной системы. На большинстве платформ временные файлы будут иметь режим 0o600, а файлы, сохраненные из памяти, будут записаны с использованием стандартной системной маски umask.
По соображениям безопасности эти разрешения не применяются к временным файлам, хранящимся в каталоге FILE_UPLOAD_TEMP_DIR.
Этот параметр также задает разрешения по умолчанию для собранных статических файлов при использовании команды управления collectstatic. Подробнее о том, как переопределить это значение, см. в разделе collectstatic.
Предупреждение
Всегда добавляйте префикс 0o перед режимом.
Если вы не знакомы с режимами доступа к файлам, обратите внимание, что префикс 0o очень важен: он указывает на восьмеричное число — именно в таком виде необходимо задавать режимы. Если использовать 644, поведение будет совершенно неправильным.
FILE_UPLOAD_TEMP_DIR
По умолчанию: None
Каталог для временного хранения данных (обычно файлов размером больше FILE_UPLOAD_MAX_MEMORY_SIZE) во время загрузки файлов. Если задано значение None, Django будет использовать стандартный временный каталог операционной системы. Например, в Unix-подобных операционных системах по умолчанию используется /tmp.
Подробности см. в разделе Управление файлами.
FIRST_DAY_OF_WEEK
По умолчанию: 0 (воскресенье)
Число, обозначающее первый день недели. Особенно полезно при отображении календаря. Это значение используется только при отключенной интернационализации форматов или если для текущей локали не найден формат.
Значение должно быть целым числом от 0 до 6, где 0 означает воскресенье, 1 — понедельник и т. д.
FIXTURE_DIRS
По умолчанию: [] (пустой список)
Список каталогов для поиска файлов фикстур в порядке поиска, помимо каталога fixtures каждого приложения.
Обратите внимание: эти пути следует указывать с прямыми косыми чертами в стиле Unix, даже в Windows.
См. разделы Предоставление данных с помощью фикстур и Загрузка фикстур.
FORCE_SCRIPT_NAME
По умолчанию: None
Если значение не равно None, оно будет использоваться в качестве значения переменной окружения SCRIPT_NAME для любого HTTP-запроса. Этот параметр позволяет переопределить предоставленное сервером значение SCRIPT_NAME, которое может быть переписанной версией предпочтительного значения или вообще отсутствовать. Кроме того, django.setup() использует этот параметр для задания префикса скрипта для преобразователя URL вне цикла запрос-ответ (например, в командах управления и автономных скриптах), чтобы формировать правильные URL, когда задано значение FORCE_SCRIPT_NAME.
FORM_RENDERER
По умолчанию: 'django.forms.renderers.DjangoTemplates'
Класс, отображающий формы и виджеты форм. Он должен реализовывать низкоуровневый API отображения. В Django входят следующие средства отображения форм:
FORMAT_MODULE_PATH
По умолчанию: None
Полный путь Python к пакету, содержащему пользовательские определения форматов для локалей проекта. Если значение не равно None, Django будет искать файл formats.py в каталоге с именем текущей локали и использовать форматы, определенные в этом файле.
Ожидается, что имя каталога с определениями форматов будет записано в нотации имени локали, например de, pt_BR, en_US и т. д.
Например, если для FORMAT_MODULE_PATH задано значение mysite.formats, а текущий язык — en (английский), Django будет ожидать следующую структуру каталогов:
mysite/
formats/
__init__.py
en/
__init__.py
formats.py
В качестве значения этого параметра также можно задать список путей Python, например:
FORMAT_MODULE_PATH = [
"mysite.formats",
"some_app.formats",
]
При поиске определенного формата Django будет перебирать все указанные пути Python, пока не найдет модуль, в котором этот формат действительно определен. Это означает, что форматы, определенные в пакетах, расположенных выше в списке, будут иметь приоритет над такими же форматами в пакетах ниже.
Доступны следующие форматы:
IGNORABLE_404_URLS
По умолчанию: [] (пустой список)
Список скомпилированных объектов регулярных выражений, описывающих URL, которые следует игнорировать при отправке по электронной почте уведомлений об ошибках HTTP 404 (см. раздел Управление сообщениями об ошибках). Регулярные выражения сопоставляются с результатом request's full paths (включая строку запроса, если она есть). Используйте этот параметр, если на вашем сайте отсутствует часто запрашиваемый файл, например favicon.ico или robots.txt.
Этот параметр используется только при включенном BrokenLinkEmailsMiddleware (см. раздел Промежуточное ПО).
INSTALLED_APPS
По умолчанию: [] (пустой список)
Список строк, обозначающих все приложения, включенные в эту установку Django. Каждая строка должна представлять собой точечный путь Python к:
- классу конфигурации приложения (предпочтительный вариант) или
- пакету, содержащему приложение.
Подробнее о конфигурациях приложений.
Для интроспекции используйте реестр приложений
Ваш код никогда не должен обращаться к INSTALLED_APPS напрямую. Вместо этого используйте django.apps.apps.
Имена и метки приложений в INSTALLED_APPS должны быть уникальными
Значение names приложения — точечный путь Python к пакету приложения — должно быть уникальным. Добавить одно и то же приложение дважды нельзя, если только его код не скопирован под другим именем.
Значение labels приложения — по умолчанию последняя часть имени — также должно быть уникальным. Например, нельзя включить одновременно django.contrib.auth и myproject.auth. Однако можно изменить метку приложения с помощью пользовательской конфигурации, задающей другое значение label.
Эти правила действуют независимо от того, содержит ли INSTALLED_APPS ссылки на классы конфигурации приложений или на пакеты приложений.
Если несколько приложений предоставляют разные версии одного и того же ресурса (шаблона, статического файла, команды управления или перевода), приоритет имеет приложение, указанное в INSTALLED_APPS первым.
INTERNAL_IPS
По умолчанию: [] (пустой список)
Список IP-адресов в виде строк, которые:
- Позволяют контекстному процессору
debug()добавлять переменные в контекст шаблона. - Позволяют использовать букмарклеты admindocs, даже если пользователь не вошел в систему как сотрудник.
- Помечаются как «внутренние» (в отличие от «ВНЕШНИЕ») в письмах
AdminEmailHandler.
LANGUAGE_CODE
По умолчанию: 'en-us'
Строка, представляющая код языка для этой установки. Он должен соответствовать стандартному формату идентификатора языка. Например, американский английский — "en-us". См. также список идентификаторов языков и раздел Интернационализация и локализация.
У этого параметра три назначения:
- Если промежуточное ПО локали не используется, параметр определяет, какой перевод будет показан всем пользователям.
- Если промежуточное ПО локали активно, параметр задаёт резервный язык на случай, если не удаётся определить предпочтительный язык пользователя или сайт его не поддерживает. Он также задаёт резервный перевод, если для некоторой строки нет перевода на предпочтительный язык пользователя.
- Если локализация явно отключена с помощью фильтра
unlocalizeили тега{% localize off %}, параметр задаёт резервные форматы локализации, которые будут применены вместо неё. Подробности см. в разделе управление локализацией в шаблонах.
Подробнее см. в разделе Как Django определяет языковые предпочтения.
LANGUAGES
По умолчанию: список всех доступных языков. Этот список постоянно растёт, поэтому его копия здесь неизбежно быстро устарела бы. Актуальный список переведённых языков можно найти в файле django/conf/global_settings.py.
Список состоит из 2-кортежей формата (код языка, language name), например ('ja', 'Japanese'). Он определяет, какие языки доступны для выбора. См. раздел Интернационализация и локализация.
Как правило, значения по умолчанию достаточно. Задавайте этот параметр, только если хотите ограничить выбор языков подмножеством языков, предоставляемых Django.
Если вы определяете пользовательский параметр LANGUAGES, можно пометить названия языков как строки для перевода с помощью функции gettext_lazy().
Пример файла настроек:
from django.utils.translation import gettext_lazy as _
LANGUAGES = [
("de", _("German")),
("en", _("English")),
]
LANGUAGES_BIDI
По умолчанию: список всех кодов языков, для которых используется письмо справа налево. Актуальный список таких языков можно найти в файле django/conf/global_settings.py.
Список содержит коды языков, для которых используется письмо справа налево.
Как правило, значения по умолчанию достаточно. Задавайте этот параметр, только если хотите ограничить выбор языков подмножеством языков, предоставляемых Django. Если вы определяете пользовательский параметр LANGUAGES, список двунаправленных языков может содержать коды языков, которые не включены на данном сайте.
LOCALE_PATHS
По умолчанию: [] (пустой список)
Список каталогов, в которых Django ищет файлы переводов. См. раздел Как Django находит переводы.
Пример:
LOCALE_PATHS = [
"/home/www/project/common_files/locale",
"/var/local/translations/locale",
]
Django будет искать в каждом из этих путей каталоги <locale_code>/LC_MESSAGES, содержащие файлы переводов.
LOGGING
По умолчанию: словарь конфигурации ведения журнала.
Структура данных, содержащая сведения о конфигурации. Если эта структура данных не пуста, её содержимое будет передано в качестве аргумента методу настройки, описанному в параметре LOGGING_CONFIG.
В частности, конфигурация ведения журнала по умолчанию отправляет ошибки HTTP 500 обработчику электронной почты, когда параметр DEBUG имеет значение False. См. также раздел Настройка ведения журнала.
Конфигурацию ведения журнала по умолчанию можно посмотреть в файле django/utils/log.py.
LOGGING_CONFIG
По умолчанию: 'logging.config.dictConfig'
Путь к вызываемому объекту, который будет использоваться для настройки ведения журнала в проекте Django. По умолчанию указывает на метод настройки dictConfig из Python.
Если присвоить параметру LOGGING_CONFIG значение None, процесс настройки ведения журнала будет пропущен.
MANAGERS
По умолчанию: [] (пустой список)
Список в том же формате, что и 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.
Пример: "https://media.example.com/"
Предупреждение
При приёме загружаемого содержимого от ненадёжных пользователей существуют риски для безопасности! Подробности о мерах защиты см. в разделе руководства по безопасности Содержимое, загруженное пользователями.
Предупреждение
MEDIA_URL и STATIC_URL должны иметь разные значения. Подробнее см. в разделе MEDIA_ROOT.
Примечание
Если MEDIA_URL — относительный путь, перед ним будет добавлено предоставленное сервером значение SCRIPT_NAME (или /, если оно не задано). Это упрощает размещение приложения Django в подпути без необходимости добавлять дополнительную настройку.
MIDDLEWARE
По умолчанию: None
Список используемого промежуточного ПО. См. раздел Промежуточное ПО.
MIGRATION_MODULES
По умолчанию: {} (пустой словарь)
Словарь, указывающий пакет, в котором находятся модули миграций для каждого приложения. Значение этого параметра по умолчанию — пустой словарь, но стандартное имя пакета для модулей миграций — migrations.
Пример:
{"blog": "blog.db_migrations"}
В этом случае миграции приложения blog будут находиться в пакете blog.db_migrations.
Если передать аргумент app_label, команда makemigrations автоматически создаст пакет, если он ещё не существует.
Если указать None в качестве значения для приложения, Django будет считать это приложение приложением без миграций, даже если существует подмодуль migrations. Это можно использовать, например, в файле тестовых настроек, чтобы пропустить миграции во время тестирования (таблицы для моделей приложений всё равно будут созданы). Чтобы отключить миграции для всех приложений во время тестирования, вместо этого можно присвоить параметру MIGRATE значение False. Если MIGRATION_MODULES используется в общих настройках проекта, не забудьте применить параметр migrate --run-syncdb, если хотите создать таблицы для приложения.
MONTH_DAY_FORMAT
По умолчанию: 'F j'
Формат по умолчанию для полей даты на страницах списков изменений административного интерфейса Django, а также, возможно, в других частях системы, когда отображаются только месяц и день.
Например, при фильтрации списка изменений в административном интерфейсе Django по дате с помощью иерархического фильтра заголовок для конкретного дня отображает день и месяц. В разных локалях используются разные форматы. Например, в американском английском будет «January 1», а в испанском может быть «1 Enero».
Обратите внимание: формат, заданный локалью, имеет более высокий приоритет и будет применён вместо этого.
См. allowed date format strings. См. также DATE_FORMAT, DATETIME_FORMAT, TIME_FORMAT и YEAR_MONTH_FORMAT.
NUMBER_GROUPING
По умолчанию: 0
Количество цифр в каждой группе целой части числа.
Обычно это используется для отображения разделителя тысяч. Если значением этого параметра является 0, группировка числа не выполняется. Если значение больше 0, в качестве разделителя групп будет использоваться THOUSAND_SEPARATOR.
В некоторых локалях используются группы цифр неодинакового размера, например 10,00,00,000 в en_IN. В этом случае можно передать последовательность с размерами групп цифр. Первое число задаёт размер группы перед десятичным разделителем, а каждое последующее — размер предыдущих групп. Если последовательность заканчивается на -1, дальнейшая группировка не выполняется. Если последовательность заканчивается на 0, размер последней группы используется для оставшейся части числа.
Пример кортежа для en_IN:
NUMBER_GROUPING = (3, 2, 0)
Обратите внимание: формат, заданный локалью, имеет более высокий приоритет и будет применён вместо этого.
См. также DECIMAL_SEPARATOR, THOUSAND_SEPARATOR и USE_THOUSAND_SEPARATOR.
PREPEND_WWW
По умолчанию: False
Следует ли добавлять поддомен «www.» к URL, в которых его нет. Этот параметр используется только в том случае, если установлено CommonMiddleware (см. раздел Промежуточное ПО). См. также APPEND_SLASH.
ROOT_URLCONF
По умолчанию: не определено
Строка, представляющая полный путь импорта Python к корневому URLconf, например "mydjangoapps.urls". Для отдельного запроса значение можно переопределить, задав атрибут urlconf входящего объекта HttpRequest. Подробности см. в разделе Как Django обрабатывает запрос.
SECRET_KEY
По умолчанию: '' (пустая строка)
Секретный ключ для конкретной установки Django. Он используется для обеспечения криптографической подписи и должен иметь уникальное, непредсказуемое значение.
django-admin startproject автоматически добавляет случайно сгенерированный SECRET_KEY в каждый новый проект.
При использовании ключа не следует предполагать, что он имеет тип текста или байтов. Для преобразования к нужному типу при каждом использовании следует вызывать force_str() или force_bytes().
Django откажется запускаться, если параметр SECRET_KEY не задан.
Предупреждение
Храните это значение в секрете.
Запуск Django с известным значением SECRET_KEY лишает силы многие средства защиты Django и может привести к уязвимостям, позволяющим повысить привилегии и удалённо выполнить код.
Секретный ключ используется для:
- Всех сеансов, если используется любой серверный модуль сеансов, отличный от
django.contrib.sessions.backends.cache, либо используется стандартныйget_session_auth_hash(). - Всех сообщений, если используется
CookieStorageилиFallbackStorage. - Всех токенов
PasswordResetView. - Любого использования криптографической подписи, если не предоставлен другой ключ.
Если секретный ключ больше не задан в параметре SECRET_KEY и не содержится в SECRET_KEY_FALLBACKS, всё перечисленное выше будет аннулировано. При смене секретного ключа временно переместите старый ключ в SECRET_KEY_FALLBACKS. Секретные ключи не используются для паролей пользователей, поэтому смена ключа на них не повлияет.
Примечание
Файл settings.py, создаваемый командой django-admin
startproject по умолчанию, содержит уникальный SECRET_KEY для удобства.
SECRET_KEY_FALLBACKS
По умолчанию: []
Список резервных секретных ключей для конкретной установки Django. Они используются для обеспечения смены SECRET_KEY.
Чтобы сменить секретные ключи, задайте новый SECRET_KEY и переместите предыдущее значение в начало списка SECRET_KEY_FALLBACKS. Когда будете готовы завершить срок действия сеансов, токенов сброса пароля и прочих данных, использующих эти ключи, удалите старые значения из конца списка SECRET_KEY_FALLBACKS.
Примечание
Операции подписи требуют значительных вычислительных затрат. Наличие нескольких старых значений ключей в SECRET_KEY_FALLBACKS создаёт дополнительную нагрузку при всех проверках, которые не совпадают с более ранним ключом.
Поэтому после подходящего периода, достаточного для смены ключей, резервные значения следует удалить.
При использовании значений секретных ключей не следует предполагать, что они имеют тип текста или байтов. Для преобразования к нужному типу при каждом использовании следует вызывать force_str() или force_bytes().
SECURE_CONTENT_TYPE_NOSNIFF
По умолчанию: True
Если значение True, SecurityMiddleware устанавливает заголовок X-Content-Type-Options: nosniff для всех ответов, в которых он ещё не задан.
SECURE_CROSS_ORIGIN_OPENER_POLICY
По умолчанию: 'same-origin'
Если значение не равно None, SecurityMiddleware устанавливает во всех ответах, в которых он ещё не задан, заголовок Cross-Origin Opener Policy со значением, указанным в параметре.
SECURE_CSP
По умолчанию: {}
Этот параметр задаёт директивы, используемые промежуточным ПО ContentSecurityPolicyMiddleware, которое формирует и добавляет заголовок Content-Security-Policy (CSP) ко всем ответам, в которых он ещё не задан.
Заголовок Content-Security-Policy предписывает браузерам ограничивать ресурсы, которые может загружать страница. Правильно настроенная CSP может блокировать содержимое, нарушающее заданные правила, помогая предотвращать межсайтовый скриптинг (XSS) и другие атаки с внедрением содержимого благодаря явному указанию доверенных источников для таких данных, как скрипты, стили, изображения, шрифты и другие ресурсы.
Значением параметра должно быть отображение (обычно словарь), сопоставляющее имена директив с их значениями. Каждый ключ должен быть допустимой директивой CSP, например default-src или script-src. Соответствующее значение может быть списком, кортежем или множеством выражений источников либо URL, разрешённых для этой директивы. Если используется множество, оно будет автоматически отсортировано для обеспечения единообразного вывода в создаваемых заголовках.
В этом примере показана ожидаемая структура с использованием констант, определённых в разделе Константы CSP:
from django.utils.csp import CSP
SECURE_CSP = {
"default-src": [CSP.SELF],
"img-src": ["data:", CSP.SELF, "https://images.example.com"],
"frame-src": [CSP.NONE],
}
Проверка директив
Промежуточное ПО CSP в Django помогает сформировать и отправить нужный заголовок на основе ваших настроек, но не проверяет, соответствуют ли директивы и значения спецификации CSP. Вы несёте ответственность за синтаксическую и семантическую корректность конфигурации. Во время разработки используйте инструменты разработчика браузера или внешние средства проверки CSP.
Список доступных директив и их значений см. в документации MDN по директивам CSP.
SECURE_CSP_REPORT_ONLY
По умолчанию: {}
Эта настройка аналогична SECURE_CSP, но вместо применения политики она указывает ContentSecurityPolicyMiddleware добавлять к ответам заголовок Content-Security-Policy-Report-Only, который позволяет браузерам отслеживать нарушения политики и отправлять отчёты о них, не блокируя содержимое. Это полезно для тестирования и доработки политики перед её применением.
Большинство браузеров регистрируют нарушения CSP в консоли разработчика и могут отправлять их на конечную точку для отчётов. Чтобы собирать эти отчёты, необходимо определить директиву report-uri (подробности см. в разделе Отчёты о нарушениях политики).
Как отмечено в документации MDN по Content-Security-Policy-Report-Only, для отправки отчётов необходимо указать директиву report-uri; в противном случае заголовок не будет влиять на отправку отчётов (за исключением записи сообщений в консоль инструментов разработчика браузера).
В соответствии с примером настройки SECURE_CSP:
from django.utils.csp import CSP
SECURE_CSP_REPORT_ONLY = {
"default-src": [CSP.SELF],
"img-src": ["data:", CSP.SELF, "https://images.example.com"],
"frame-src": [CSP.NONE],
"report-uri": "/my-site/csp/reports/",
}
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
По умолчанию: 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, is_secure() всегда будет возвращать False — даже для запросов, отправленных конечным пользователем по HTTPS. И наоборот, если соединение между прокси и Django защищено HTTPS, is_secure() всегда будет возвращать True — даже для запросов, изначально отправленных по HTTP.
В этой ситуации настройте прокси так, чтобы он задавал пользовательский HTTP-заголовок, сообщающий Django, был ли запрос получен по HTTPS, и установите SECURE_PROXY_SSL_HEADER, чтобы Django знал, какой заголовок проверять.
Укажите кортеж из двух элементов — имени заголовка и требуемого значения. Например:
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
Эта настройка указывает Django доверять заголовку X-Forwarded-Proto, полученному от нашего прокси, и считать запрос гарантированно защищённым (то есть изначально полученным по HTTPS), если:
- значение заголовка равно
'https'или - его начальное, самое левое значение равно
'https'в случае списка протоколов, разделённых запятыми (например,'https,http,http').
Устанавливайте эту настройку только в том случае, если вы контролируете свой прокси или имеете другие гарантии того, что он корректно задаёт и удаляет этот заголовок.
Обратите внимание: формат заголовка должен соответствовать формату, используемому в request.META: все буквы заглавные, и, вероятно, имя начинается с HTTP_. (Помните, что Django автоматически добавляет 'HTTP_' в начало имён x-заголовков, прежде чем сделать заголовок доступным в request.META.)
Предупреждение
Изменение этой настройки может поставить под угрозу безопасность вашего сайта. Прежде чем менять её, убедитесь, что полностью понимаете свою конфигурацию.
Перед установкой этой настройки (при условии, что используются значения из примера выше) убедитесь, что выполняются ВСЕ перечисленные условия:
- Ваше приложение Django работает за прокси-сервером.
- Прокси удаляет заголовок
X-Forwarded-Protoиз всех входящих запросов, даже если он содержит список протоколов, разделённых запятыми. Другими словами, если конечные пользователи включают этот заголовок в свои запросы, прокси его удаляет. - Прокси задаёт заголовок
X-Forwarded-Protoи отправляет его в Django, но только для запросов, изначально полученных по HTTPS.
Если какое-либо из этих условий не выполняется, оставьте эту настройку равной None и найдите другой способ определения HTTPS, например с помощью пользовательского промежуточного слоя.
SECURE_REDIRECT_EXEMPT
По умолчанию: [] (пустой список)
Если путь URL соответствует регулярному выражению из этого списка, запрос не будет перенаправлен на HTTPS. SecurityMiddleware удаляет начальные косые черты из путей URL, поэтому шаблоны не должны их содержать, например SECURE_REDIRECT_EXEMPT = [r'^no-ssl/$', …]. Если SECURE_SSL_REDIRECT равно False, эта настройка не действует.
SECURE_REFERRER_POLICY
По умолчанию: 'same-origin'
Если настройка задана, SecurityMiddleware устанавливает для заголовка Referrer Policy указанное значение во всех ответах, в которых этот заголовок ещё не задан.
SECURE_SSL_HOST
По умолчанию: None
Если задана строка (например, secure.example.com), все перенаправления SSL будут вести на этот хост, а не на хост исходного запроса (например, www.example.com). Если SECURE_SSL_REDIRECT равно False, эта настройка не действует.
SECURE_SSL_REDIRECT
По умолчанию: False
Если True, SecurityMiddleware перенаправляет все запросы, не использующие HTTPS, на HTTPS (за исключением URL, соответствующих регулярным выражениям из SECURE_REDIRECT_EXEMPT).
Примечание
Если при установке значения True возникают бесконечные перенаправления, вероятно, ваш сайт работает за прокси-сервером и не может определить, какие запросы защищены, а какие — нет. Скорее всего, прокси устанавливает заголовок, указывающий на защищённые запросы. Чтобы устранить проблему, выясните, что это за заголовок, и соответственно настройте параметр SECURE_PROXY_SSL_HEADER.
SERIALIZATION_MODULES
По умолчанию: не задано
Словарь модулей, содержащих определения сериализаторов (в виде строк), с идентификаторами типов сериализации в виде строк в качестве ключей. Например, чтобы определить сериализатор YAML, используйте:
SERIALIZATION_MODULES = {"yaml": "path.to.yaml_serializer"}
SERVER_EMAIL
По умолчанию: 'root@localhost'
Адрес электронной почты, с которого отправляются сообщения об ошибках, например сообщения для ADMINS и MANAGERS. Этот адрес используется в заголовке From: и может быть указан в любом формате, допустимом для выбранного протокола отправки почты.
Почему мои письма отправляются с другого адреса?
Этот адрес используется только для сообщений об ошибках. Это не адрес, с которого отправляются обычные письма с помощью send_mail(); для этого см. DEFAULT_FROM_EMAIL.
SHORT_DATE_FORMAT
По умолчанию: 'm/d/Y' (например, 12/31/2003)
Доступный формат, который можно использовать для отображения полей даты в шаблонах. Обратите внимание: формат, заданный локалью, имеет более высокий приоритет и будет применён вместо него. См. allowed date format strings.
См. также DATE_FORMAT и SHORT_DATETIME_FORMAT.
SHORT_DATETIME_FORMAT
По умолчанию: 'm/d/Y P' (например, 12/31/2003 4 p.m.)
Доступный формат, который можно использовать для отображения полей даты и времени в шаблонах. Обратите внимание: формат, заданный локалью, имеет более высокий приоритет и будет применён вместо него. См. allowed date format strings.
См. также DATE_FORMAT и SHORT_DATE_FORMAT.
SIGNING_BACKEND
По умолчанию: 'django.core.signing.TimestampSigner'
Бэкенд, используемый для подписывания файлов cookie и других данных.
См. также документацию по криптографической подписи.
SILENCED_SYSTEM_CHECKS
По умолчанию: [] (пустой список)
Список идентификаторов сообщений, созданных системой проверок (то есть ["models.W001"]), которые вы хотите навсегда принять и игнорировать. Результаты отключённых проверок не будут выводиться в консоль.
См. также документацию по системе проверок.
STORAGES
По умолчанию:
{
"default": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
},
"staticfiles": {
"BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
},
}
Словарь, содержащий настройки всех хранилищ, используемых Django. Это вложенный словарь, в котором псевдоним хранилища сопоставляется со словарём параметров отдельного хранилища.
Для хранилищ можно выбрать любые псевдонимы. Однако два псевдонима имеют особое значение:
-
defaultдля управления файлами.'django.core.files.storage.FileSystemStorage'— это механизм хранения по умолчанию. -
staticfilesдля управления статическими файлами.'django.contrib.staticfiles.storage.StaticFilesStorage'— это механизм хранения по умолчанию.
Ниже приведён пример settings.py, определяющий пользовательское файловое хранилище под названием example:
STORAGES = {
# ...
"example": {
"BACKEND": "django.core.files.storage.FileSystemStorage",
"OPTIONS": {
"location": "/example",
"base_url": "/example/",
},
},
}
OPTIONS передаются в BACKEND при инициализации в **kwargs.
Готовый экземпляр бэкенда хранилища можно получить из django.core.files.storage.storages. Используйте ключ, соответствующий определению бэкенда в STORAGES.
Моё значение объединяется со значением по умолчанию?
Определение этой настройки заменяет значение по умолчанию; значения не объединяются.
TASKS
По умолчанию:
{
"default": {
"BACKEND": "django.tasks.backends.immediate.ImmediateBackend",
}
}
Словарь, содержащий настройки всех бэкендов задач, используемых Django. Это вложенный словарь, в котором псевдонимы бэкендов сопоставляются со словарём параметров каждого бэкенда.
Настройка TASKS должна задавать бэкенд default; также можно указать любое количество дополнительных бэкендов. В зависимости от используемого бэкенда могут потребоваться другие параметры. Стандартно доступны следующие параметры.
BACKEND
По умолчанию: '' (пустая строка)
Используемый бэкенд задач. Встроенные бэкенды:
'django.tasks.backends.dummy.DummyBackend''django.tasks.backends.immediate.ImmediateBackend'
Можно использовать бэкенд, не входящий в состав Django, указав в BACKEND полный путь к классу бэкенда (то есть mypackage.backends.whatever.WhateverBackend).
QUEUES
По умолчанию: ["default"]
Укажите имена очередей, поддерживаемых бэкендом. Это позволяет предотвратить постановку задач в несуществующие очереди.
Чтобы отключить проверку имён очередей, задайте пустой список ([]).
OPTIONS
По умолчанию: {}
Дополнительные параметры, передаваемые бэкенду задач. Доступные параметры зависят от используемого бэкенда задач.
TEMPLATES
По умолчанию: [] (пустой список)
Список, содержащий настройки всех обработчиков шаблонов, используемых Django. Каждый элемент списка — это словарь с параметрами отдельного обработчика.
Ниже приведена конфигурация, указывающая обработчику шаблонов Django загружать шаблоны из подкаталога templates каждого установленного приложения:
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"APP_DIRS": True,
},
]
Следующие параметры доступны для всех бэкендов.
BACKEND
По умолчанию: не задано
Используемый бэкенд шаблонов. Встроенные бэкенды шаблонов:
'django.template.backends.django.DjangoTemplates''django.template.backends.jinja2.Jinja2'
Можно использовать бэкенд шаблонов, не входящий в состав Django, указав в BACKEND полный путь (то есть 'mypackage.whatever.Backend').
NAME
По умолчанию: см. ниже
Псевдоним этого обработчика шаблонов. Это идентификатор, позволяющий выбрать обработчик для рендеринга. Псевдонимы всех настроенных обработчиков шаблонов должны быть уникальны.
Если псевдоним не указан, по умолчанию используется имя модуля, в котором определён класс обработчика, то есть предпоследняя часть BACKEND. Например, если бэкенд — 'mypackage.whatever.Backend', его имя по умолчанию — 'whatever'.
DIRS
По умолчанию: [] (пустой список)
Каталоги, в которых обработчик будет искать исходные файлы шаблонов, в порядке поиска.
APP_DIRS
По умолчанию: False
Определяет, должен ли обработчик искать исходные файлы шаблонов в установленных приложениях.
Примечание
Файл settings.py, создаваемый по умолчанию командой django-admin
startproject, устанавливает значение 'APP_DIRS': True.
OPTIONS
По умолчанию: {} (пустой словарь)
Дополнительные параметры, передаваемые бэкенду шаблонов. Доступные параметры зависят от используемого бэкенда. Список параметров встроенных бэкендов см. в разделах DjangoTemplates и Jinja2.
TEST_RUNNER
По умолчанию: 'django.test.runner.DiscoverRunner'
Имя класса, используемого для запуска набора тестов. См. раздел Использование других сред тестирования.
TEST_NON_SERIALIZED_APPS
По умолчанию: [] (пустой список)
Чтобы восстановить состояние базы данных между тестами для TransactionTestCase и бэкендов баз данных, не поддерживающих транзакции, при запуске тестов Django сериализует содержимое всех приложений, чтобы перед запуском тестов, которым это необходимо, загрузить данные из сохранённой копии.
Это увеличивает время запуска тестового исполнителя. Если вы знаете, что некоторым приложениям эта возможность не нужна, укажите здесь их полные имена (например, 'django.contrib.contenttypes'), чтобы исключить их из процесса сериализации.
THOUSAND_SEPARATOR
По умолчанию: ',' (запятая)
Разделитель разрядов по умолчанию, используемый при форматировании чисел. Эта настройка используется, только если USE_THOUSAND_SEPARATOR равно True, а значение NUMBER_GROUPING больше 0.
Обратите внимание: формат, заданный локалью, имеет более высокий приоритет и будет применён вместо него.
См. также NUMBER_GROUPING, DECIMAL_SEPARATOR и USE_THOUSAND_SEPARATOR.
TIME_FORMAT
По умолчанию: 'P' (например, 4 p.m.)
Формат по умолчанию для отображения полей времени в любой части системы. Обратите внимание: формат, заданный локалью, имеет более высокий приоритет и будет применён вместо него. См. allowed date format strings.
См. также DATE_FORMAT и DATETIME_FORMAT.
TIME_INPUT_FORMATS
По умолчанию:
[
"%H:%M:%S", # '14:30:59'
"%H:%M:%S.%f", # '14:30:59.000200'
"%H:%M", # '14:30'
]
Список форматов, принимаемых при вводе данных в поле времени. Форматы проверяются по порядку; используется первый подходящий. Обратите внимание: эти строки формата используют синтаксис модуля datetime Python, а не строки формата фильтра шаблонов date.
Формат, заданный локалью, имеет более высокий приоритет и будет применён вместо него.
См. также DATE_INPUT_FORMATS и DATETIME_INPUT_FORMATS.
TIME_ZONE
По умолчанию: 'America/Chicago'
Строка, обозначающая часовой пояс этой установки. См. список часовых поясов.
Примечание
Поскольку Django изначально выпускался со значением 'America/Chicago' для настройки TIME_ZONE, глобальная настройка (используемая, если в 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. Если вы запускаете Django в Windows, значение TIME_ZONE должно соответствовать системному часовому поясу.
USE_I18N
По умолчанию: True
Логическое значение, указывающее, должна ли быть включена система переводов Django. Эта настройка позволяет отключить её для повышения производительности. Если установлено значение False, Django выполнит некоторые оптимизации и не будет загружать средства перевода.
См. также LANGUAGE_CODE и USE_TZ.
Примечание
Файл settings.py, создаваемый по умолчанию командой django-admin
startproject, для удобства содержит USE_I18N = True.
USE_THOUSAND_SEPARATOR
По умолчанию: False
Логическое значение, указывающее, следует ли отображать числа с разделителем разрядов. Если установлено значение True, Django форматирует числа с использованием настроек NUMBER_GROUPING и THOUSAND_SEPARATOR. На последние две настройки также может влиять локаль, которая имеет приоритет.
См. также DECIMAL_SEPARATOR, NUMBER_GROUPING и THOUSAND_SEPARATOR.
USE_TZ
По умолчанию: True
Логическое значение, указывающее, должны ли значения даты и времени по умолчанию учитывать часовой пояс. Если установлено значение True, Django будет использовать внутри системы значения даты и времени с информацией о часовом поясе.
Если USE_TZ равно False, Django будет использовать наивные значения даты и времени в местном времени, за исключением разбора строк в формате ISO 8601: если в них указана информация о часовом поясе, она всегда сохраняется.
USE_X_FORWARDED_HOST
По умолчанию: False
Логическое значение, определяющее, следует ли использовать заголовок X-Forwarded-Host вместо заголовка Host. Эту настройку следует включать только в том случае, если используется прокси, устанавливающий этот заголовок.
Эта настройка имеет приоритет над USE_X_FORWARDED_PORT. Согласно RFC 7239 Section 5.3, заголовок X-Forwarded-Host может содержать номер порта, и в этом случае не следует использовать USE_X_FORWARDED_PORT.
USE_X_FORWARDED_PORT
По умолчанию: False
Логическое значение, определяющее, следует ли использовать заголовок X-Forwarded-Port вместо переменной SERVER_PORT META. Эту настройку следует включать только в том случае, если используется прокси, устанавливающий этот заголовок.
USE_X_FORWARDED_HOST имеет приоритет над этой настройкой.
URLIZE_ASSUME_HTTPS
Устарело начиная с версии 6.0.
По умолчанию: False
Установите для этого переходного параметра значение True, чтобы в течение цикла выпусков Django 6.x использовать HTTPS в качестве протокола по умолчанию, если он не указан в URL-адресах, обрабатываемых шаблонными фильтрами urlize и urlizetrunc.
WSGI_APPLICATION
По умолчанию: None
Полный путь Python к объекту WSGI-приложения, который будут использовать встроенные серверы Django (например, runserver). Команда управления django-admin
startproject создаст стандартный файл wsgi.py с вызываемым объектом application и укажет этот параметр на этот объект application.
Если параметр не задан, будет использоваться возвращаемое значение django.core.wsgi.get_wsgi_application(). В этом случае поведение runserver будет идентично поведению в предыдущих версиях Django.
YEAR_MONTH_FORMAT
По умолчанию: 'F Y'
Формат по умолчанию для полей даты на страницах списков изменений в административном интерфейсе Django и, возможно, в других частях системы, когда отображаются только год и месяц.
Например, когда список изменений в административном интерфейсе Django фильтруется с помощью детализации по дате, в заголовке для выбранного месяца отображаются месяц и год. В разных локалях используются разные форматы. Например, в американском английском будет «January 2006», а в другой локали может быть «2006/January».
Обратите внимание, что соответствующий формат, заданный локалью, имеет более высокий приоритет и будет применен вместо этого.
См. allowed date format strings. См. также DATE_FORMAT, DATETIME_FORMAT, TIME_FORMAT и MONTH_DAY_FORMAT.
X_FRAME_OPTIONS
По умолчанию: 'DENY'
Значение по умолчанию для заголовка X-Frame-Options, используемого XFrameOptionsMiddleware. См. документацию о защите от кликджекинга.
Аутентификация
Настройки для django.contrib.auth.
AUTHENTICATION_BACKENDS
По умолчанию: ['django.contrib.auth.backends.ModelBackend']
Список классов бэкендов аутентификации (в виде строк), используемых при попытке аутентифицировать пользователя. Подробнее см. в документации по бэкендам аутентификации.
AUTH_USER_MODEL
По умолчанию: 'auth.User'
Модель, используемая для представления пользователя. См. Замена стандартной модели пользователя.
Предупреждение
Нельзя изменить настройку AUTH_USER_MODEL в течение жизненного цикла проекта (то есть после создания и миграции моделей, зависящих от нее) без значительных усилий. Ее следует задать при создании проекта, а указанная в ней модель должна быть доступна в первой миграции приложения, в котором она находится. Подробнее см. Замена стандартной модели пользователя.
LOGIN_REDIRECT_URL
По умолчанию: '/accounts/profile/'
URL-адрес или именованный шаблон URL, на который перенаправляются запросы после входа, если у LoginView отсутствует параметр GET next.
LOGIN_URL
По умолчанию: '/accounts/login/'
URL-адрес или именованный шаблон URL, на который перенаправляются запросы для входа при использовании декоратора login_required(), LoginRequiredMixin, AccessMixin или при подключенном LoginRequiredMiddleware.
LOGOUT_REDIRECT_URL
По умолчанию: None
URL-адрес или именованный шаблон URL, на который перенаправляются запросы после выхода, если у LogoutView отсутствует атрибут next_page.
Если задано значение None, перенаправление не выполняется, а отображается представление выхода.
PASSWORD_RESET_TIMEOUT
По умолчанию: 259200 (3 дня, в секундах)
Срок действия ссылки для сброса пароля в секундах.
Используется представлением PasswordResetConfirmView.
Примечание
Уменьшение этого значения никак не влияет на возможность злоумышленника подобрать токен для сброса пароля методом перебора. Токены разработаны так, чтобы быть защищенными от перебора и без ограничения срока действия.
Это ограничение по времени предназначено для защиты от некоторых маловероятных сценариев атак, например, если кто-то получит доступ к архивам электронной почты, в которых могут содержаться старые, неиспользованные токены для сброса пароля.
PASSWORD_HASHERS
По умолчанию:
[
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
"django.contrib.auth.hashers.Argon2PasswordHasher",
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
"django.contrib.auth.hashers.ScryptPasswordHasher",
]
AUTH_PASSWORD_VALIDATORS
По умолчанию: [] (пустой список)
Список валидаторов, используемых для проверки надежности паролей пользователей. Подробнее см. в разделе Проверка паролей. По умолчанию проверка не выполняется и принимаются любые пароли.
Сообщения
Настройки для django.contrib.messages.
MESSAGE_LEVEL
По умолчанию: messages.INFO
Устанавливает минимальный уровень сообщений, сохраняемых фреймворком сообщений. Подробнее см. в разделе уровни сообщений.
Как избежать циклического импорта
Если вы переопределяете MESSAGE_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 — при установке файлов cookie используют значения SESSION_COOKIE_DOMAIN, SESSION_COOKIE_SECURE и SESSION_COOKIE_HTTPONLY.
Сеансы
Настройки для 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.JSONSerializer'
Подробнее см. в разделе Сериализация сеансов.
Сайты
Настройки для django.contrib.sites.
SITE_ID
По умолчанию: не задано
ID текущего сайта в таблице базы данных django_site в виде целого числа. Это позволяет данным приложений быть связанными с определенными сайтами, а одной базе данных — управлять содержимым нескольких сайтов.
Статические файлы
Настройки для django.contrib.staticfiles.
STATIC_ROOT
По умолчанию: None
Абсолютный путь к каталогу, в который команда collectstatic собирает статические файлы для развертывания.
Пример: "/var/www/example.com/static/"
Если приложение staticfiles включено (как в стандартном шаблоне проекта), команда управления collectstatic соберет статические файлы в этот каталог. Подробнее об использовании см. в руководстве по управлению статическими файлами.
Предупреждение
Изначально этот каталог должен быть пустым: в него собираются статические файлы из постоянных расположений, чтобы упростить развертывание; не используйте его для постоянного хранения статических файлов. Для этого следует использовать каталоги, которые будут найдены с помощью средства staticfiles finders; по умолчанию это подкаталоги приложений 'static/' и каталоги, указанные в STATICFILES_DIRS).
STATIC_URL
По умолчанию: None
URL-адрес для ссылок на статические файлы, находящиеся в STATIC_ROOT.
Пример: "static/" или "https://static.example.com/"
Если значение не None, оно будет использоваться как базовый путь для определений ресурсов (класс Media) и приложения staticfiles.
Если задано непустое значение, оно должно заканчиваться косой чертой.
Возможно, потребуется настроить раздачу этих файлов в режиме разработки; в рабочей среде это необходимо сделать обязательно.
Примечание
Если STATIC_URL — относительный путь, перед ним будет добавлено значение SCRIPT_NAME, предоставленное сервером (или /, если оно не задано). Благодаря этому приложение Django проще размещать во вложенном пути без дополнительной настройки.
STATICFILES_DIRS
По умолчанию: [] (пустой список)
Этот параметр определяет дополнительные расположения, которые приложение staticfiles будет обходить, если включено средство поиска FileSystemFinder, например при использовании команды управления collectstatic или findstatic либо представления для раздачи статических файлов.
Здесь следует указать список строк с полными путями к дополнительным каталогам файлов, например:
STATICFILES_DIRS = [
"/home/special.polls.com/polls/static",
"/home/polls.com/polls/static",
"/opt/webfiles/common",
]
Обратите внимание, что для этих путей следует использовать прямые косые черты в стиле Unix, даже в Windows (например, "C:/Users/user/mysite/extra_static_content").
Префиксы (необязательно)
Если вы хотите ссылаться на файлы в одном из расположений, добавляя дополнительное пространство имен, можно необязательно указать префикс в виде кортежа (prefix, path), например:
STATICFILES_DIRS = [
# ...
("downloads", "/opt/webfiles/stats"),
]
Например, если для STATIC_URL задано значение 'static/', команда управления 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_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 в настройке STORAGES.
Примечание
При использовании средства поиска AppDirectoriesFinder убедитесь, что приложение доступно для staticfiles: добавьте его в настройку INSTALLED_APPS вашего сайта.
Средства поиска статических файлов в настоящее время считаются закрытым интерфейсом, поэтому документация по нему не предоставляется.
Тематический указатель основных настроек
Кэш
База данных
Отладка
Электронная почта
Отчёты об ошибках
Загрузка файлов
Формы
Глобализация (i18n/l10n)
Интернационализация (i18n)
Локализация (l10n)
HTTP
Ведение журнала
Модели
Безопасность
Сериализация
Шаблоны
Тестирование
- База данных:
TEST TEST_NON_SERIALIZED_APPSTEST_RUNNER
URL-адреса
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/settings/