Система проверки фреймворка
Система проверки фреймворка представляет собой набор статических проверок для валидации проектов Django. Она обнаруживает распространённые проблемы и предоставляет подсказки по их исправлению. Фреймворк расширяем, поэтому вы легко можете добавить свои собственные проверки.
Для получения подробной информации о том, как добавить собственные проверки и интегрировать их с системами проверок Django, см. Руководство по теме системы проверок.
Ссылка на API
CheckMessage
-
class CheckMessage(level, msg, hint=None, obj=None, id=None)
Предупреждения и ошибки, генерируемые системами проверок, должны быть экземплярами 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)
-
class Info(msg, hint=None, obj=None, id=None)
-
class Warning(msg, hint=None obj=None, id=None)
-
class Error(msg, hint=None, obj=None, id=None)
-
class Critical(msg, hint=None, obj=None, id=None)
Встроенные теги
-
admin: Проверки любых деклараций админского сайта. -
caches: Проверки конфигурации кэша. -
compatibility: Флаги потенциальных проблем при обновлении версий. -
database: Проверки проблем, связанных с базой данных. Проверки базы данных по умолчанию не выполняются, так как они выполняют больше, чем статический анализ кода, как это делают обычные проверки. Они выполняются только командойmigrateили если вы укажете тегdatabaseпри вызове командыcheck. -
models: Проверки определений моделей, полей и менеджеров. -
security: Проверки конфигурации, связанной с безопасностью. -
signals: Проверки деклараций сигналов и регистрации обработчиков. -
staticfiles: Проверки конфигурацииdjango.contrib.staticfiles. -
templates: Проверки конфигурации, связанной с шаблонами. -
translation: Проверки конфигурации, связанной с переводом. -
urls: Проверки конфигурации URL.
Некоторые проверки могут быть зарегистрированы с несколькими тегами.
Основные системные проверки
Обратная совместимость
Проверки совместимости предупреждают о потенциальных проблемах, которые могут возникнуть после обновления Django.
-
2_0.W001: Ваш шаблон URL
<pattern>имеетrouteкоторый содержит(?P<, начинается с^или заканчивается на$. Это, вероятно, произошло при миграции сurl()наpath().
Кэши
Следующие проверки проверяют, правильно ли настроена настройка CACHES:
-
caches.E001: Вы должны определить кэш
'default'в настройкеCACHES.
База данных
MySQL
Если вы используете MySQL, будут выполнены следующие проверки:
-
mysql.E001: MySQL не позволяет уникальным
CharFieldиметьmax_length> 255. -
mysql.W002: Строгий режим MySQL не установлен для подключения к базе данных
<alias>. См. также Настройка sql_mode.
Поля моделей
- 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.E100:
AutoFieldдолжны устанавливать primary_key=True. -
fields.E110:
BooleanFieldне принимают значения null. Эта проверка появилась до добавления поддержки null значений в 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, если значения null не разрешены, так как значения blank хранятся как null. -
fields.E160: Опции
auto_now,auto_now_add, иdefaultвзаимоисключают друг друга. Может присутствовать только одна из них. - fields.W161: Предоставлено исправленное значение по умолчанию.
-
fields.W162:
<database>не поддерживает индекс базы данных в столбцах<field data type>. -
fields.E170:
BinaryField’sdefaultне может быть строкой. Используйте байтовое содержимое вместо этого. -
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.
Поля файлов
-
fields.E200:
unique— некорректный аргумент дляFileField. Эта проверка удалена в Django 1.11. -
fields.E201:
primary_key— некорректный аргумент дляFileField. -
fields.E202: Аргумент
FileField’supload_toдолжен быть относительным путём, а не абсолютным. -
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>из модели<model>. -
models.E007: Поле
<field name>имеет имя столбца<column name>, которое используется другим полем. -
models.E008:
index_togetherдолжно быть списком или кортежем. -
models.E009: Все элементы
index_togetherдолжны быть списками или кортежами. -
models.E010:
unique_togetherдолжно быть списком или кортежем. -
models.E011: Все элементы
unique_togetherдолжны быть списками или кортежами. -
models.E012:
indexes/index_together/unique_togetherссылается на несуществующее поле<field name>. -
models.E013:
indexes/index_together/unique_togetherссылается наManyToManyField<field name>, ноManyToManyFieldне поддерживаются для этого варианта. -
models.E014:
orderingдолжно быть кортежем или списком (даже если вы хотите отсортировать только по одному полю). -
models.E015:
orderingссылается на несуществующее поле, связанное поле или поиск<field name>. -
models.E016:
indexes/index_together/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>.
Безопасность
Проверки безопасности не гарантируют безопасность вашего сайта. Они не проверяют код, не обнаруживают вторжения и не выполняют сложных задач. Скорее, они помогают выполнять автоматическую проверку простых ошибок, которые могут повысить безопасность вашего сайта.
Некоторые из этих проверок могут быть неподходящими для вашей конкретной конфигурации развертывания. Например, если вы перенаправляете 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_BROWSER_XSS_FILTER,SECURE_REFERRER_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 уникальных символов. Пожалуйста, сгенерируйте длинный и случайныйSECRET_KEY, в противном случае многие критически важные для безопасности функции Django будут уязвимы для атак. -
security.W010: У вас есть
django.contrib.sessionsв вашемINSTALLED_APPS, но вы не установилиSESSION_COOKIE_SECUREвTrue. Использование безопасного-только cookie сессии затрудняет перехват сессий пользователей средствами перехвата сетевого трафика. -
security.W011: У вас есть
django.contrib.sessions.middleware.SessionMiddlewareв вашемMIDDLEWARE, но вы не установилиSESSION_COOKIE_SECUREвTrue. Использование безопасного-только cookie сессии затрудняет перехват сессий пользователей средствами перехвата сетевого трафика. -
security.W012:
SESSION_COOKIE_SECUREне установлено вTrue. Использование безопасного-только cookie сессии затрудняет перехват сессий пользователей средствами перехвата сетевого трафика. -
security.W013: У вас есть
django.contrib.sessionsв вашемINSTALLED_APPS, но вы не установилиSESSION_COOKIE_HTTPONLYвTrue. ИспользованиеHttpOnlycookie сессии затрудняет перехват сессий пользователей атаками межсайтового скриптинга. -
security.W014: У вас есть
django.contrib.sessions.middleware.SessionMiddlewareв вашемMIDDLEWARE, но вы не установилиSESSION_COOKIE_HTTPONLYвTrue. ИспользованиеHttpOnlycookie сессии затрудняет перехват сессий пользователей атаками межсайтового скриптинга. -
security.W015:
SESSION_COOKIE_HTTPONLYне установлено вTrue. ИспользованиеHttpOnlycookie сессии затрудняет перехват сессий пользователей атаками межсайтового скриптинга. -
security.W016:
CSRF_COOKIE_SECUREне установлено вTrue. Использование безопасного-только CSRF cookie затрудняет перехват токена CSRF средствами перехвата сетевого трафика. -
security.W017:
CSRF_COOKIE_HTTPONLYне установлено вTrue. ИспользованиеHttpOnlyCSRF cookie затрудняет перехват токена CSRF атаками межсайтового скриптинга. Это проверка удалена в Django 1.11, так как настройкаCSRF_COOKIE_HTTPONLYне предоставляет практической пользы. -
security.W018: В развёртывании не следует устанавливать
DEBUGвTrue. -
security.W019: У вас есть
django.middleware.clickjacking.XFrameOptionsMiddlewareв вашемMIDDLEWARE, но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на недопустимое значение.
Сигналы
-
signals.E001:
<handler>был подключен к сигналу<signal>с леничной ссылкой на отправителя<app label>.<model>, но приложение<app label>не установлено или не предоставляет модель<model>.
Шаблоны
Следующие проверки гарантируют правильную настройку вашей настройки TEMPLATES:
-
templates.E001: У вас есть
'APP_DIRS': Trueв вашихTEMPLATES, но также указано'loaders'вOPTIONS. УдалитеAPP_DIRSили удалите опцию'loaders'. -
templates.E002:
string_if_invalidвTEMPLATESOPTIONSдолжен быть строкой, но получено:{value}({type}).
Перевод
Ниже приведены проверки, выполняемые для вашей конфигурации перевода:
-
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'не может быть импортирована.
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]/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_vertical[n]относится к<field name>, что не является атрибутом<model>. -
admin.E020: Значение
filter_vertical[n]/filter_vertical[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]не является вызываемым объектом, атрибутом<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]не должно быть полемManyToManyField. -
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>должны быть уникальными.
InlineModelAdmin
Следующие проверки выполняются для любого InlineModelAdmin, зарегистрированного как встроенный в ModelAdmin.
-
admin.E201: Нельзя исключить поле
<field name>, так как оно является внешним ключом к родительской модели<app_label>.<model>. -
admin.E202:
<model>не имеетForeignKeyна<parent model>./<model>имеет более одногоForeignKeyна<parent model>. -
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>и поле идентификатора объекта<field name>.
AdminSite
Следующие проверки выполняются для стандартной AdminSite:
-
admin.E401:
django.contrib.contenttypesдолжен быть вINSTALLED_APPSдля использования приложения администрирования. -
admin.E402:
django.contrib.auth.context_processors.authдолжен быть включён вDjangoTemplates(TEMPLATES), если используется стандартный backend авторизации для использования приложения администрирования. -
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для использования приложения администрирования.
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должен быть атрибутом или свойством, а не методом. Игнорирование этого представляет собой проблему безопасности, поскольку анонимные пользователи будут обрабатываться как авторизованные!
contenttypes
Следующие проверки выполняются, когда модель содержит GenericForeignKey или GenericRelation:
-
contenttypes.E001: Объект
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>должно быть вызываемым объектом, а не экземпляром, чтобы не использоваться совместно всеми экземплярами поля.
sites
Следующие проверки выполняются для любой модели, использующей CurrentSiteManager:
-
sites.E001:
CurrentSiteManagerне удалось найти поле с именем<field name>. -
sites.E002:
CurrentSiteManagerне может использовать<field>, так как это не внешнее или многие-ко-многим поле.
staticfiles
Следующие проверки гарантируют правильную настройку django.contrib.staticfiles:
-
staticfiles.E001: Настройка
STATICFILES_DIRSне является кортежем или списком. -
staticfiles.E002: Настройка
STATICFILES_DIRSне должна содержать настройкуSTATIC_ROOT. -
staticfiles.E003: Префикс
<prefix>в настройкеSTATICFILES_DIRSне должен оканчиваться на слэш.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/3.0/ref/checks/