Система проверок фреймворка
Система проверок фреймворка — это набор статических проверок для валидации проектов Django. Она обнаруживает распространённые проблемы и предоставляет подсказки по их исправлению. Фреймворк расширяем, поэтому вы можете легко добавить собственные проверки.
Подробные сведения о добавлении собственных проверок и их интеграции с системами проверок Django см. в руководстве по темам проверок системы.
Справочник по API
CheckMessage
-
class CheckMessage(level, msg, hint=None, obj=None, id=None)[source]
Предупреждения и ошибки, вызываемые проверками системы, должны быть экземплярами CheckMessage. Экземпляр инкапсулирует одну ошибку или предупреждение для отчёта. Он также предоставляет контекст и подсказки, применимые к сообщению, а также уникальный идентификатор, используемый для фильтрации.
Аргументы конструктора:
-
level - Уровень серьезности сообщения. Используйте одно из предопределённых значений:
DEBUG,INFO,WARNING,ERROR,CRITICAL. Если уровень не меньшеERROR, Django предотвратит выполнение команд управления. Сообщения с уровнем нижеERROR(то есть предупреждения) выводятся в консоль, но могут быть отключены. -
msg - Короткая строка (менее 80 символов) описывающая проблему. Строка не должна содержать символы перевода строки.
-
hint - Строка одной строки, предоставляющая подсказку по исправлению проблемы. Если подсказка не может быть предоставлена или подсказка очевидна из сообщения об ошибке, подсказку можно опустить или использовать значение
None. -
obj - Необязательно. Объект, предоставляющий контекст для сообщения (например, модель, в которой была обнаружена проблема). Объект должен быть моделью, полем, менеджером или любым другим объектом, который определяет метод
__str__(). Метод используется при выводе всех сообщений, и его результат предшествует сообщению. -
id - Необязательная строка. Уникальный идентификатор проблемы. Идентификаторы должны соответствовать шаблону
applabel.X001, гдеX— одна из буквCEWID, указывающая на уровень серьезности сообщения (Cдля критических,Eдля ошибок). Число может быть назначено приложением, но должно быть уникальным внутри этого приложения.
Существуют подклассы, которые упрощают создание сообщений с общими уровнями. При их использовании вы можете опустить аргумент level, так как он подразумевается именем класса.
-
class Debug(msg, hint=None, obj=None, id=None)[source]
-
class Info(msg, hint=None, obj=None, id=None)[source]
-
class Warning(msg, hint=None obj=None, id=None)[source]
-
class Error(msg, hint=None, obj=None, id=None)[source]
-
class Critical(msg, hint=None, obj=None, id=None)[source]
Встроенные теги
-
admin: Проверки любых объявлений админской панели. -
async_support: Проверки конфигурации, связанной с асинхронностью. -
caches: Проверки конфигурации, связанной с кэшем. -
compatibility: Помечает потенциальные проблемы с обновлением версий. -
database: Проверки проблем с конфигурацией базы данных. Проверки баз данных не выполняются по умолчанию, потому что они делают больше, чем статический анализ кода, как обычные проверки. Они выполняются только командойmigrateили если вы указали конфигурированные псевдонимы базы данных с помощью опции--databaseпри вызове командыcheck. -
files: Проверки конфигурации, связанной с файлами. -
models: Проверки определений моделей, полей и менеджеров. -
security: Проверки конфигурации, связанной с безопасностью. -
signals: Проверки объявлений сигналов и регистрации обработчиков. -
sites: Проверки конфигурацииdjango.contrib.sites. -
staticfiles: Проверки конфигурацииdjango.contrib.staticfiles. -
templates: Проверки конфигурации, связанной с шаблонами. -
translation: Проверки конфигурации, связанной с переводом. -
urls: Проверки конфигурации URL.
Некоторые проверки могут быть зарегистрированы с несколькими тегами.
Основные проверки системы
Поддержка асинхронности
Следующие проверки проверяют вашу настройку для поддержки асинхронности:
-
async.E001: Вы не должны устанавливать переменную среды
DJANGO_ALLOW_ASYNC_UNSAFEв рабочей среде. Это отключает защиту от асинхронных ошибок.
Обратная совместимость
Проверки совместимости предупреждают о потенциальных проблемах, которые могут возникнуть после обновления Django.
-
2_0.W001: Ваш шаблон URL
<pattern>имеетroute, который содержит(?P<, начинается с^, или заканчивается$. Вероятно, это ошибка при миграции сurl()наpath(). -
4_0.E001: Начиная с Django 4.0, значения в настройке
CSRF_TRUSTED_ORIGINSдолжны начинаться со схемы (обычноhttp://илиhttps://), но обнаружено<hostname>.
Кэши
Следующие проверки проверяют правильность настройки вашей настройки CACHES:
-
caches.E001: Вы должны определить кэш
'default'в вашей настройкеCACHES. -
caches.W002: Ваша конфигурация
<cache>может раскрыть ваш кэш или привести к повреждению данных, так как её путьLOCATIONсовпадает, находится внутри или содержитMEDIA_ROOT/STATIC_ROOT/STATICFILES_DIRS. -
caches.W003: Ваш кэш
<cache>LOCATIONотносительный. Используйте абсолютный путь вместо него.
База данных
MySQL и MariaDB
Если вы используете MySQL или MariaDB, будут выполнены следующие проверки:
-
mysql.E001: MySQL/MariaDB не допускает уникальных
CharFieldсmax_length> 255. Эта проверка была изменена наmysql.W003в Django 3.1, так как реальный максимальный размер зависит от многих факторов. -
mysql.W002: Режим строгости MySQL/MariaDB не установлен для подключения к базе данных
<alias>. См. также Настройка sql_mode. -
mysql.W003: MySQL/MariaDB, возможно, не позволяет уникальным
CharFieldсmax_length> 255.
Управление файлами
Следующие проверки проверяют вашу настройку для Управления файлами:
-
files.E001: Настройка
FILE_UPLOAD_TEMP_DIRссылается на несуществующий каталог<path>.
Поля моделей
- fields.E001: Имена полей не должны оканчиваться символом подчеркивания.
-
fields.E002: Имена полей не должны содержать
"__". -
fields.E003:
pk— зарезервированное слово, которое нельзя использовать в качестве имени поля. -
fields.E004:
choicesдолжно быть отображением (например, словарем) или итерируемым объектом (например, списком или кортежем). -
fields.E005:
choicesдолжно быть отображением фактических значений на удобочитаемые имена или итерируемым объектом, содержащим(actual value, human readable name)кортежи. -
fields.E006:
db_indexдолжно бытьNone,TrueилиFalse. -
fields.E007: Первичные ключи не должны содержать
null=True. -
fields.E008: Все
validatorsдолжны быть вызываемыми. -
fields.E009:
max_lengthслишком мало для размещения самого длинного значения вchoices(<count>символов). -
fields.E010: Значение по умолчанию для
<field>должно быть вызываемым объектом, а не экземпляром, чтобы оно не разделялось между всеми экземплярами поля. -
fields.E011:
<database>не поддерживает значения по умолчанию в базе данных с выражениями (db_default). -
fields.E012:
<expression>нельзя использовать вdb_default. -
fields.E100:
AutoFieldполя должны устанавливать primary_key=True. -
fields.E110:
BooleanFieldполя не принимают нулевые значения. *Эта проверка появилась до добавления поддержки нулевых значений в Django 2.1.* -
fields.E120:
CharFieldполя должны определять атрибутmax_length. -
fields.E121:
max_lengthдолжно быть положительным целым числом. -
fields.W122:
max_lengthигнорируется при использовании с<integer field type>. -
fields.E130:
DecimalFieldполя должны определять атрибутdecimal_places. -
fields.E131:
decimal_placesдолжно быть неотрицательным целым числом. -
fields.E132:
DecimalFieldполя должны определять атрибутmax_digits. -
fields.E133:
max_digitsдолжно быть положительным целым числом. -
fields.E134:
max_digitsдолжно быть больше или равноdecimal_places. -
fields.E140:
FilePathFieldполя должны иметь либоallow_files, либоallow_foldersустановленным в True. -
fields.E150:
GenericIPAddressFieldполя не могут иметьblank=True, еслиnull=False, так как пустые значения хранятся как нулевые. -
fields.E160: Опции
auto_now,auto_now_add, иdefaultвзаимоисключающие. Должна быть только одна из них. - fields.W161: Установлено фиксированное значение по умолчанию.
-
fields.W162:
<database>не поддерживает индекс базы данных в столбцах<field data type>. -
fields.W163:
<database>не поддерживает комментарии к столбцам (db_comment). -
fields.E170:
BinaryField’sdefaultне может быть строкой. Используйте байтовый контент вместо этого. -
fields.E180:
<database>не поддерживаетJSONField. -
fields.E190:
<database>не поддерживает сортировку базы данных в<field_type>. -
fields.E220:
<database>не поддерживаетGeneratedField. -
fields.E221:
<database>не поддерживает неперсистентныеGeneratedField. -
fields.E222:
<database>не поддерживает персистентныеGeneratedField. -
fields.E223:
GeneratedField.output_fieldсодержит ошибки: … -
fields.W224:
GeneratedField.output_fieldсодержит предупреждения: … -
fields.E900:
IPAddressFieldудален, за исключением поддержки в исторических миграциях. -
fields.W900:
IPAddressFieldустарел. Поддержка (кроме исторических миграций) будет удалена в Django 1.9. *Эта проверка появилась в Django 1.7 и 1.8* -
fields.W901:
CommaSeparatedIntegerFieldустарел. Поддержка (кроме исторических миграций) будет удалена в Django 2.0. *Эта проверка появилась в Django 1.10 и 1.11* -
fields.E901:
CommaSeparatedIntegerFieldудален, за исключением поддержки в исторических миграциях. -
fields.W902:
FloatRangeFieldустарел и будет удален в Django 3.1. *Эта проверка появилась в Django 2.2 и 3.0* -
fields.W903:
NullBooleanFieldустарел. Поддержка (кроме исторических миграций) будет удалена в Django 4.0. *Эта проверка появилась в Django 3.1 и 3.2* -
fields.E903:
NullBooleanFieldудален, за исключением поддержки в исторических миграциях. -
fields.W904:
django.contrib.postgres.fields.JSONFieldустарел. Поддержка (кроме исторических миграций) будет удалена в Django 4.0. *Эта проверка появилась в Django 3.1 и 3.2* -
fields.E904:
django.contrib.postgres.fields.JSONFieldудален, за исключением поддержки в исторических миграциях. -
fields.W905:
django.contrib.postgres.fields.CICharFieldустарел. Поддержка (кроме исторических миграций) будет удалена в Django 5.1. *Эта проверка появилась в Django 4.2 и 5.0* -
fields.E905:
django.contrib.postgres.fields.CICharFieldудален, за исключением поддержки в исторических миграциях. -
fields.W906:
django.contrib.postgres.fields.CIEmailFieldустарел. Поддержка (кроме исторических миграций) будет удалена в Django 5.1. *Эта проверка появилась в Django 4.2 и 5.0* -
fields.E906:
django.contrib.postgres.fields.CIEmailFieldудален, за исключением поддержки в исторических миграциях. -
fields.W907:
django.contrib.postgres.fields.CITextFieldустарел. Поддержка (кроме исторических миграций) будет удалена в Django 5.1. *Эта проверка появилась в Django 4.2 и 5.0* -
fields.E907:
django.contrib.postgres.fields.CITextFieldудален, за исключением поддержки исторических миграций.
Поля файлов
-
fields.E200:
unique— недопустимый аргумент дляFileField. *Эта проверка удалена в Django 1.11* -
fields.E201:
primary_key— недопустимый аргумент дляFileField. -
fields.E202: Аргумент
upload_toFileFieldдолжен быть относительным, а не абсолютным путем. -
fields.E210: Нельзя использовать
ImageField, так как Pillow не установлен.
Связанные поля
Модели
-
models.E001:
<swappable>не имеет формыapp_label.app_name. -
models.E002:
<SETTING>ссылается на<model>, которая не установлена или является абстрактной. -
models.E003: Модель имеет два идентичных отношения многие-ко-многим через промежуточную модель
<app_label>.<model>. -
models.E004:
idможет быть использовано только как имя поля, если поле также устанавливаетprimary_key=True. -
models.E005: Поле
<field name>из родительской модели<model>конфликтует с полем<field name>из родительской модели<model>. -
models.E006: Поле
<field name>конфликтует с полем<field name>модели<model>. -
models.E007: Поле
<field name>имеет имя колонки<column name>, которое используется другим полем. -
models.E008:
index_togetherдолжно быть списком или кортежем. Эта проверка появилась до Django 5.1. -
models.E009: Все элементы
index_togetherдолжны быть списками или кортежами. Эта проверка появилась до Django 5.1. -
models.E010:
unique_togetherдолжен быть списком или кортежем. -
models.E011: Все элементы
unique_togetherдолжны быть списками или кортежами. -
models.E012:
constraints/indexes/unique_togetherссылается на несуществующее поле<field name>. -
models.E013:
constraints/indexes/unique_togetherссылается наManyToManyField<field name>, ноManyToManyFieldне поддерживаются для этого варианта. -
models.E014:
orderingдолжен быть кортежем или списком (даже если вы хотите сортировать только по одному полю). -
models.E015:
orderingссылается на несуществующее поле, связанное поле или поиск<field name>. -
models.E016:
constraints/indexes/unique_togetherссылается на поле<field_name>, которое не локально для модели<model>. -
models.E017: Модель-прокси
<model>содержит поля модели. -
models.E018: Сгенерированное имя столбца слишком длинное для поля
<field>. Максимальная длина составляет<maximum length>для базы данных<alias>. -
models.E019: Сгенерированное имя столбца слишком длинное для поля M2M
<M2M field>. Максимальная длина составляет<maximum length>для базы данных<alias>. -
models.E020: Метод класса
<model>.check()в настоящее время перезаписан. -
models.E021:
orderingиorder_with_respect_toне могут использоваться вместе. -
models.E022:
<function>содержит леничную ссылку на<app label>.<model>, но приложение<app label>не установлено или не предоставляет модель<model>. -
models.E023: Имя модели
<model>не может начинаться или заканчиваться подчёркиванием, так как это конфликтует с синтаксисом поиска запроса. -
models.E024: Имя модели
<model>не может содержать двойные подчёркивания, так как это конфликтует с синтаксисом поиска запроса. -
models.E025: Свойство
<property name>конфликтует с аксессором связанного поля. -
models.E026: Модель не может иметь более одного поля с
primary_key=True. -
models.W027:
<database>не поддерживает ограничения проверок. -
models.E028:
db_table<db_table>используется несколькими моделями:<model list>. -
models.E029: Имя индекса
<index>не является уникальным для модели<model>. -
models.E030: Имя индекса
<index>не является уникальным среди моделей:<model list>. -
models.E031: Имя ограничения
<constraint>не является уникальным для модели<model>. -
models.E032: Имя ограничения
<constraint>не является уникальным среди моделей:<model list>. -
models.E033: Имя индекса
<index>не может начинаться с подчёркивания или цифры. -
models.E034: Имя индекса
<index>не может быть длиннее<max_length>символов. -
models.W035:
db_table<db_table>используется несколькими моделями:<model list>. -
models.W036:
<database>не поддерживает уникальные ограничения с условиями. -
models.W037:
<database>не поддерживает индексы с условиями. -
models.W038:
<database>не поддерживает откладываемые уникальные ограничения. -
models.W039:
<database>не поддерживает уникальные ограничения с колонками, которые не являются ключами. -
models.W040:
<database>не поддерживает индексы с колонками, которые не являются ключами. -
models.E041:
constraintsссылается на соединённое поле<field name>. -
models.W042: Автоматически созданный первичный ключ используется, когда тип первичного ключа не определён, по умолчанию
django.db.models.AutoField. -
models.W043:
<database>не поддерживает индексы по выражениям. -
models.W044:
<database>не поддерживает уникальные ограничения по выражениям. -
models.W045: Ограничение проверки
<constraint>содержит выражениеRawSQL()и не будет проверено во время моделиfull_clean(). -
models.W046:
<database>не поддерживает комментарии к таблицам (db_table_comment). -
models.W047:
<database>не поддерживает уникальные ограничения с различными значениями null.
Безопасность
Проверки безопасности не делают ваш сайт безопасным. Они не проверяют код, не обнаруживают вторжения и не выполняют ничего особенно сложного. Скорее, они помогают выполнить автоматизированную, простую проверку, которая может помочь вам улучшить безопасность вашего сайта.
Некоторые из этих проверок могут быть неприменимы к вашей конкретной конфигурации развертывания. Например, если перенаправление HTTP на HTTPS выполняется в балансировщике нагрузки, постоянные предупреждения о том, что не включен SECURE_SSL_REDIRECT, будут раздражать. Используйте SILENCED_SYSTEM_CHECKS, чтобы отключить ненужные проверки.
Следующие проверки выполняются, если вы используете опцию check --deploy:
-
security.W001: У вас нет
django.middleware.security.SecurityMiddlewareв вашемMIDDLEWARE, поэтому настройкиSECURE_HSTS_SECONDS,SECURE_CONTENT_TYPE_NOSNIFF,SECURE_REFERRER_POLICY,SECURE_CROSS_ORIGIN_OPENER_POLICYиSECURE_SSL_REDIRECTне будут иметь эффекта. -
security.W002: У вас нет
django.middleware.clickjacking.XFrameOptionsMiddlewareв вашемMIDDLEWARE, поэтому ваши страницы не будут передаваться с заголовком'x-frame-options'. Если нет веских причин для отображения сайта во фрейме, рекомендуется включить этот заголовок для предотвращения атак clickjacking. -
security.W003: Похоже, вы не используете встроенную защиту от поддельных межсайтовых запросов Django через middleware (
django.middleware.csrf.CsrfViewMiddlewareотсутствует в вашемMIDDLEWARE). Включение middleware — самый безопасный подход, чтобы избежать уязвимостей. -
security.W004: Вы не задали значение для настройки
SECURE_HSTS_SECONDS. Если весь сайт доступен только через SSL, можно рассмотреть возможность установки значения и включения HTTP Strict Transport Security. Сначала ознакомьтесь с документацией; небрежное включение HSTS может привести к серьезным и необратимым проблемам. -
security.W005: Вы не установили значение настройки
SECURE_HSTS_INCLUDE_SUBDOMAINSвTrue. Без этого ваш сайт потенциально уязвим к атакам через небезопасное подключение к поддомену. Установите это значение вTrueтолько если уверены, что все поддомены вашего домена должны обслуживаться исключительно через SSL. -
security.W006: Настройка
SECURE_CONTENT_TYPE_NOSNIFFне установлена вTrue, поэтому ваши страницы не будут передаваться с заголовком'X-Content-Type-Options: nosniff'. Рекомендуется включить этот заголовок для предотвращения неправильного определения типов контента браузером. -
security.W007: Настройка
SECURE_BROWSER_XSS_FILTERне установлена вTrue, поэтому ваши страницы не будут передаваться с заголовком'X-XSS-Protection: 1; mode=block'. Рекомендуется включить этот заголовок для активации фильтрации XSS в браузере и защиты от атак XSS. Эта проверка удалена в Django 3.0, так как заголовокX-XSS-Protectionбольше не поддерживается современными браузерами. -
security.W008: Настройка
SECURE_SSL_REDIRECTне установлена вTrue. Если ваш сайт должен быть доступен как через SSL, так и без него, установите это значение вTrueили настройте балансировщик нагрузки или прокси-сервер для перенаправления всех подключений на HTTPS. -
security.W009: Настройка
SECRET_KEYсодержит менее 50 символов, менее 5 уникальных символов или начинается с'django-insecure-', что указывает на автоматическое создание её Django. Пожалуйста, сгенерируйте длинное и случайное значение, иначе многие критически важные для безопасности функции Django будут уязвимы к атакам. -
security.W010: В вашем
INSTALLED_APPSестьdjango.contrib.sessions, но вы не установилиSESSION_COOKIE_SECUREвTrue. Использование куки сессии, доступной только через безопасное соединение, затрудняет перехват сессий пользователя злоумышленниками. -
security.W011: В вашем
MIDDLEWAREестьdjango.contrib.sessions.middleware.SessionMiddleware, но вы не установилиSESSION_COOKIE_SECUREвTrue. Использование куки сессии, доступной только через безопасное соединение, затрудняет перехват сессий пользователя злоумышленниками. -
security.W012:
SESSION_COOKIE_SECUREне установлена вTrue. Использование куки сессии, доступной только через безопасное соединение, затрудняет перехват сессий пользователя злоумышленниками. -
security.W013: В вашем
INSTALLED_APPSестьdjango.contrib.sessions, но вы не установилиSESSION_COOKIE_HTTPONLYвTrue. Использование куки сессии с атрибутомHttpOnlyзатрудняет перехват сессий пользователя с помощью атак XSS. -
security.W014: В вашем
MIDDLEWAREестьdjango.contrib.sessions.middleware.SessionMiddleware, но вы не установилиSESSION_COOKIE_HTTPONLYвTrue. Использование куки сессии с атрибутомHttpOnlyзатрудняет перехват сессий пользователя с помощью атак XSS. -
security.W015:
SESSION_COOKIE_HTTPONLYне установлена вTrue. Использование куки сессии с атрибутомHttpOnlyзатрудняет перехват сессий пользователя с помощью атак XSS. -
security.W016:
CSRF_COOKIE_SECUREне установлена вTrue. Использование куки CSRF, доступной только через безопасное соединение, затрудняет перехват токена CSRF. -
security.W017:
CSRF_COOKIE_HTTPONLYне установлена вTrue. Использование куки CSRF с атрибутомHttpOnlyзатрудняет перехват токена CSRF с помощью атак XSS. Эта проверка удалена в Django 1.11, так как настройкаCSRF_COOKIE_HTTPONLYне имеет практического преимущества. -
security.W018: В развертывании не должно быть
DEBUGустановлена вTrue. -
security.W019: В вашем
MIDDLEWAREестьdjango.middleware.clickjacking.XFrameOptionsMiddleware, ноX_FRAME_OPTIONSне установлена в'DENY'. Если нет веских причин для отображения других частей сайта во фрейме, измените её на'DENY'. -
security.W020: В развертывании
ALLOWED_HOSTSне должна быть пустой. -
security.W021: Вы не установили значение настройки
SECURE_HSTS_PRELOADвTrue. Без этого ваш сайт не может быть добавлен в список предварительной загрузки браузера. -
security.W022: Вы не установили настройку
SECURE_REFERRER_POLICY. Без этого ваш сайт не будет отправлять заголовок Referrer-Policy. Рекомендуется включить этот заголовок для защиты конфиденциальности пользователей. -
security.E023: Вы установили значение настройки
SECURE_REFERRER_POLICYна недопустимое значение. -
security.E024: Вы установили значение настройки
SECURE_CROSS_ORIGIN_OPENER_POLICYна недопустимое значение. -
security.W025: Настройка
SECRET_KEY_FALLBACKS[n]содержит менее 50 символов, менее 5 уникальных символов или начинается с'django-insecure-', что указывает на автоматическое создание её Django. Пожалуйста, сгенерируйте длинное и случайное значение, иначе многие критически важные для безопасности функции Django будут уязвимы к атакам.
Следующие проверки гарантируют правильную настройку ваших параметров безопасности:
-
security.E100:
DEFAULT_HASHING_ALGORITHMдолжен быть'sha1'или'sha256'. Эта проверка появилась в Django 3.1 и 3.2. -
security.E101: Просмотр ошибки CSRF
'path.to.view'не принимает правильное количество аргументов. -
security.E102: Просмотр ошибки CSRF
'path.to.view'не удалось импортировать.
Сигналы
-
signals.E001:
<handler>был подключен к сигналу<signal>с леничной ссылкой на отправителя<app label>.<model>, но приложение<app label>не установлено или не предоставляет модель<model>.
Шаблоны
Следующие проверки проверяют, что ваше значение TEMPLATES правильно настроено:
-
templates.E001: У вас есть
'APP_DIRS': Trueв вашемTEMPLATES, но также указано'loaders'вOPTIONS. Либо удалитеAPP_DIRS, либо удалите опцию'loaders'. Эта проверка удалена в Django 5.1, так как проверки системы теперь могут вызыватьImproperlyConfiguredвместо этого. -
templates.E002:
string_if_invalidвTEMPLATESOPTIONSдолжно быть строкой, но получено:{value}({type}). -
templates.E003:
<name>используется для нескольких модулей тегов шаблона:<module list>. Эта проверка была изменена наtemplates.W003в Django 4.1.2. -
templates.W003:
<name>используется для нескольких модулей тегов шаблона:<module list>.
Перевод
Следующие проверки выполняются на вашей конфигурации перевода:
-
translation.E001: Вы предоставили неверное значение для параметра
LANGUAGE_CODE:<value>. -
translation.E002: Вы предоставили неверный код языка в настройке
LANGUAGES:<value>. -
translation.E003: Вы предоставили неверный код языка в настройке
LANGUAGES_BIDI:<value>. -
translation.E004: Вы предоставили значение для параметра
LANGUAGE_CODE, которое не содержится в настройкеLANGUAGES.
URL-адреса
Следующие проверки выполняются на вашей конфигурации URL-адресов:
-
urls.W001: Ваш шаблон URL
<pattern>используетinclude()сroute, оканчивающимся на$. Удалите знак доллара изrouteдля предотвращения проблем с включением URL-адресов. -
urls.W002: Ваш шаблон URL
<pattern>имеетroute, начинающийся с/. Удалите этот слэш, так как он не нужен. Если этот шаблон используется вinclude(), убедитесь, что шаблонinclude()имеет конечный/. -
urls.W003: Ваш шаблон URL
<pattern>имеетname, включающий:. Удалите двоеточие, чтобы избежать неоднозначных ссылок на пространства имён. -
urls.E004: Ваш шаблон URL
<pattern>некорректен. Убедитесь, чтоurlpatternsявляется списком экземпляровpath()и/илиre_path(). -
urls.W005: Пространство имён URL
<namespace>не уникально. Возможно, вы не сможете перевернуть все URL-адреса в этом пространстве имён. -
urls.E006: Параметр
MEDIA_URL/STATIC_URLдолжен заканчиваться слэшем. -
urls.E007: Пользовательская функция
handlerXXX'path.to.view'не принимает правильное количество аргументов (…). -
urls.E008: Пользовательская функция
handlerXXX'path.to.view'не удалось импортировать. -
urls.E009: Ваш шаблон URL
<pattern>содержит некорректную функцию, передайте<view>.as_view()вместо<view>. -
urls.W010: Ваш шаблон URL
<pattern>имеет несоответствующий<angle bracket>.
contrib проверки приложений
admin
Проверки админа выполняются в рамках тега admin.
Следующие проверки выполняются для любого ModelAdmin (или его подкласса), зарегистрированного в админ-панели:
-
admin.E001: Значение
raw_id_fieldsдолжно быть списком или кортежем. -
admin.E002: Значение
raw_id_fields[n]ссылается на<field name>, которое не является полем<model>. -
admin.E003: Значение
raw_id_fields[n]должно быть внешним ключом или полем "многие-ко-многим". -
admin.E004: Значение
fieldsдолжно быть списком или кортежем. -
admin.E005: Оба
fieldsetsиfieldsуказаны. -
admin.E006: Значение
fieldsсодержит дублирующее(ие) поле(я). -
admin.E007: Значение
fieldsetsдолжно быть списком или кортежем. -
admin.E008: Значение
fieldsets[n]должно быть списком или кортежем. -
admin.E009: Значение
fieldsets[n]должно иметь длину 2. -
admin.E010: Значение
fieldsets[n][1]должно быть словарем. -
admin.E011: Значение
fieldsets[n][1]должно содержать ключfields. -
admin.E012: В
fieldsets[n][1]существуют дублирующее(ие) поле(я). -
admin.E013: Значение
fields[n]/filter_horizontal[n]/filter_vertical[n]/fieldsets[n][m]не может включатьManyToManyField<field name>, так как это поле вручную указывает модель отношения. -
admin.E014: Значение
excludeдолжно быть списком или кортежем. -
admin.E015: Значение
excludeсодержит дублирующее(ие) поле(я). -
admin.E016: Значение
formдолжно наследоваться отBaseModelForm. -
admin.E017: Значение
filter_verticalдолжно быть списком или кортежем. -
admin.E018: Значение
filter_horizontalдолжно быть списком или кортежем. -
admin.E019: Значение
filter_vertical[n]/filter_horizontal[n]ссылается на<field name>, которое не является полем<model>. -
admin.E020: Значение
filter_vertical[n]/filter_horizontal[n]должно быть полем "многие-ко-многим". -
admin.E021: Значение
radio_fieldsдолжно быть словарем. -
admin.E022: Значение
radio_fieldsссылается на<field name>, которое не является полем<model>. -
admin.E023: Значение
radio_fieldsссылается на<field name>, которое не является экземпляромForeignKey, и не имеет определенияchoices. -
admin.E024: Значение
radio_fields[<field name>]должно быть либоadmin.HORIZONTAL, либоadmin.VERTICAL. -
admin.E025: Значение
view_on_siteдолжно быть вызываемым или булевым значением. -
admin.E026: Значение
prepopulated_fieldsдолжно быть словарем. -
admin.E027: Значение
prepopulated_fieldsссылается на<field name>, которое не является полем<model>. -
admin.E028: Значение
prepopulated_fieldsссылается на<field name>, которое не должно быть полемDateTimeField,ForeignKey,OneToOneField, илиManyToManyField. -
admin.E029: Значение
prepopulated_fields[<field name>]должно быть списком или кортежем. -
admin.E030: Значение
prepopulated_fieldsссылается на<field name>, которое не является полем<model>. -
admin.E031: Значение
orderingдолжно быть списком или кортежем. -
admin.E032: Значение
orderingсодержит маркер случайного порядка?, но также содержит и другие поля. -
admin.E033: Значение
orderingссылается на<field name>, которое не является полем<model>. -
admin.E034: Значение
readonly_fieldsдолжно быть списком или кортежем. -
admin.E035: Значение
readonly_fields[n]ссылается на<field_name>, которое не является вызываемым, атрибутом<ModelAdmin class>, или атрибутом<model>. -
admin.E036: Значение
autocomplete_fieldsдолжно быть списком или кортежем. -
admin.E037: Значение
autocomplete_fields[n]ссылается на<field name>, которое не является полем<model>. -
admin.E038: Значение
autocomplete_fields[n]должно быть внешним ключом или полем "многие-ко-многим". -
admin.E039: Администратор для модели
<model>должен быть зарегистрирован для ссылки на<modeladmin>.autocomplete_fields. -
admin.E040:
<modeladmin>должен определитьsearch_fields, так как он используется в<other_modeladmin>.autocomplete_fields.
ModelAdmin
Следующие проверки выполняются для любого ModelAdmin, зарегистрированного в админ-панели:
-
admin.E101: Значение
save_asдолжно быть булевым. -
admin.E102: Значение
save_on_topдолжно быть булевым. -
admin.E103: Значение
inlinesдолжно быть списком или кортежем. -
admin.E104:
<InlineModelAdmin class>должен наследоваться отInlineModelAdmin. -
admin.E105:
<InlineModelAdmin class>должен иметь атрибутmodel. -
admin.E106: Значение
<InlineModelAdmin class>.modelдолжно бытьModel. -
admin.E107: Значение
list_displayдолжно быть списком или кортежем. -
admin.E108: Значение
list_display[n]ссылается на<label>, которое не является вызываемым объектом или атрибутом<ModelAdmin class>, или атрибутом, методом или полем<model>. -
admin.E109: Значение
list_display[n]не должно быть полем «многие ко многим» или обратной внешней связью. -
admin.E110: Значение
list_display_linksдолжно быть списком, кортежем илиNone. -
admin.E111: Значение
list_display_links[n]ссылается на<label>, которое не определено вlist_display. -
admin.E112: Значение
list_filterдолжно быть списком или кортежем. -
admin.E113: Значение
list_filter[n]должно наследоваться отListFilter. -
admin.E114: Значение
list_filter[n]не должно наследоваться отFieldListFilter. -
admin.E115: Значение
list_filter[n][1]должно наследоваться отFieldListFilter. -
admin.E116: Значение
list_filter[n]ссылается на<label>, которое не относится к полю. -
admin.E117: Значение
list_select_relatedдолжно быть булевым, кортежем или списком. -
admin.E118: Значение
list_per_pageдолжно быть целым числом. -
admin.E119: Значение
list_max_show_allдолжно быть целым числом. -
admin.E120: Значение
list_editableдолжно быть списком или кортежем. -
admin.E121: Значение
list_editable[n]ссылается на<label>, которое не является полем<model>. -
admin.E122: Значение
list_editable[n]ссылается на<label>, которое не содержится вlist_display. -
admin.E123: Значение
list_editable[n]не может быть одновременно вlist_editableиlist_display_links. -
admin.E124: Значение
list_editable[n]ссылается на первое поле вlist_display(<label>), которое нельзя использовать, еслиlist_display_linksне задано. -
admin.E125: Значение
list_editable[n]ссылается на<field name>, которое не редактируется через админку. -
admin.E126: Значение
search_fieldsдолжно быть списком или кортежем. -
admin.E127: Значение
date_hierarchyссылается на<field name>, которое не относится к полю. -
admin.E128: Значение
date_hierarchyдолжно бытьDateFieldилиDateTimeField. -
admin.E129:
<modeladmin>должен определять методhas_<foo>_permission()для действия<action>. -
admin.E130: Атрибуты
__name__действий, определённых в<modeladmin>должны быть уникальными. Имя<name>не уникально.
InlineModelAdmin
Следующие проверки выполняются для любого InlineModelAdmin, зарегистрированного как встроенный в ModelAdmin.
-
admin.E201: Нельзя исключить поле
<field name>, так как это внешняя ссылка на родительскую модель<app_label>.<model>. -
admin.E202:
<model>не имеетForeignKeyдля<parent model>.<model>имеет более однойForeignKeyдля<parent model>. Вам необходимо указать атрибутfk_name. -
admin.E203: Значение
extraдолжно быть целым числом. -
admin.E204: Значение
max_numдолжно быть целым числом. -
admin.E205: Значение
min_numдолжно быть целым числом. -
admin.E206: Значение
formsetдолжно наследоваться отBaseModelFormSet.
GenericInlineModelAdmin
Следующие проверки выполняются для любого GenericInlineModelAdmin, зарегистрированного как встроенный в ModelAdmin.
-
admin.E301:
'ct_field'ссылается на<label>, которое не является полем в<model>. -
admin.E302:
'ct_fk_field'ссылается на<label>, которое не является полем в<model>. -
admin.E303: У
<model>нетGenericForeignKey. -
admin.E304: У
<model>нетGenericForeignKey, используя поле типа содержимого<field name>и поле ID объекта<field name>.
AdminSite
Следующие проверки выполняются для стандартной AdminSite:
-
admin.E401:
django.contrib.contenttypesдолжен быть вINSTALLED_APPSдля использования приложения админки. -
admin.E402:
django.contrib.auth.context_processors.authдолжен быть включён вDjangoTemplates(TEMPLATES), если используется стандартный модуль авторизации, для использования приложения админки. -
admin.E403: Экземпляр
django.template.backends.django.DjangoTemplatesдолжен быть настроен вTEMPLATESдля использования приложения админки. -
admin.E404:
django.contrib.messages.context_processors.messagesдолжен быть включён вDjangoTemplates(TEMPLATES) для использования приложения админки. -
admin.E405:
django.contrib.authдолжен быть вINSTALLED_APPSдля использования приложения админки. -
admin.E406:
django.contrib.messagesдолжен быть вINSTALLED_APPSдля использования приложения админки. -
admin.E408:
django.contrib.auth.middleware.AuthenticationMiddlewareдолжен быть вMIDDLEWAREдля использования приложения админки. -
admin.E409:
django.contrib.messages.middleware.MessageMiddlewareдолжен быть вMIDDLEWAREдля использования приложения админки. -
admin.E410:
django.contrib.sessions.middleware.SessionMiddlewareдолжен быть вMIDDLEWAREдля использования приложения админки. -
admin.W411:
django.template.context_processors.requestдолжен быть включён вDjangoTemplates(TEMPLATES) для использования боковой панели навигации админки.
auth
-
auth.E001:
REQUIRED_FIELDSдолжен быть списком или кортежем. -
auth.E002: Поле с именем
USERNAME_FIELDдля пользовательской модели не должно включаться вREQUIRED_FIELDS. -
auth.E003:
<field>должен быть уникальным, так как он называетсяUSERNAME_FIELD. -
auth.W004:
<field>названUSERNAME_FIELD, но он не уникален. -
auth.E005: Имя разрешения
<codename>совпадает со встроенным разрешением для модели<model>. -
auth.E006: Разрешение с именем
<codename>дублируется для модели<model>. -
auth.E007:
verbose_nameмодели<model>должно содержать не более 244 символов, чтобы имена встроенных разрешений не превышали 255 символов. -
auth.E008: Разрешение с именем
<name>модели<model>превышает 255 символов. -
auth.C009:
<User model>.is_anonymousдолжен быть атрибутом или свойством, а не методом. Игнорирование этого является проблемой безопасности, так как анонимные пользователи будут обрабатываться как авторизованные! -
auth.C010:
<User model>.is_authenticatedдолжен быть атрибутом или свойством, а не методом. Игнорирование этого является проблемой безопасности, так как анонимные пользователи будут обрабатываться как авторизованные! -
auth.E011: Имя модели
<model>должно содержать не более 93 символов, чтобы имена встроенных разрешений не превышали 100 символов. -
auth.E012: Разрешение с именем
<codename>модели<model>превышает 100 символов. -
auth.E013: Для использования
django.contrib.auth.middleware.LoginRequiredMiddleware,django.contrib.auth.middleware.AuthenticationMiddlewareдолжно быть определено перед ним в MIDDLEWARE.
contenttypes
Следующие проверки выполняются, когда модель содержит GenericForeignKey или GenericRelation:
-
contenttypes.E001: Объект ID
GenericForeignKeyссылается на несуществующее поле<field>. -
contenttypes.E002: Тип контента
GenericForeignKeyссылается на несуществующее поле<field>. -
contenttypes.E003:
<field>не являетсяForeignKey. -
contenttypes.E004:
<field>не являетсяForeignKeyдляcontenttypes.ContentType. - contenttypes.E005: Имена моделей должны содержать не более 100 символов.
postgres
Следующие проверки выполняются для полей модели django.contrib.postgres:
- postgres.E001: Базовое поле для массива содержит ошибки: …
- postgres.E002: Базовое поле для массива не может быть связанным полем.
-
postgres.E003: Значение по умолчанию для
<field>должно быть вызываемым, а не экземпляром, чтобы оно не использовалось между всеми экземплярами поля. Эта проверка была изменена наfields.E010в Django 3.1. - postgres.W004: Базовое поле для массива содержит предупреждения: …
sites
Следующие проверки выполняются для любой модели, использующей CurrentSiteManager:
-
sites.E001:
CurrentSiteManagerне удалось найти поле с именем<field name>. -
sites.E002:
CurrentSiteManagerне может использовать<field>, так как это не внешнее или многие-ко-многим поле.
Следующие проверки проверяют правильную настройку django.contrib.sites:
-
sites.E101: Настройка
SITE_IDдолжна быть целым числом.
staticfiles
Следующие проверки проверяют правильную настройку django.contrib.staticfiles:
-
staticfiles.E001: Настройка
STATICFILES_DIRSне является кортежем или списком. -
staticfiles.E002: Настройка
STATICFILES_DIRSне должна содержать настройкуSTATIC_ROOT. -
staticfiles.E003: Префикс
<prefix>в настройкеSTATICFILES_DIRSне должен заканчиваться слешем. -
staticfiles.W004: Директория
<directory>в настройкеSTATICFILES_DIRSне существует. -
staticfiles.E005: Настройка
STORAGESдолжна определять хранилищеstaticfiles.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.1/ref/checks/