Система проверки фреймворка
Система проверки фреймворка — это набор статических проверок для валидации проектов 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: Проверки любых деклараций админского сайта. -
caches: Проверки конфигурации, связанной с кэшем. -
compatibility: Помечает потенциальные проблемы при обновлении версии. -
database: Проверки проблем, связанных с базой данных. Проверки базы данных не выполняются по умолчанию, так как они выполняют больше, чем статический анализ кода, как обычные проверки. Они запускаются только командойmigrateили если вы укажете тегdatabaseпри вызове командыcheck. -
models: Проверки определений моделей, полей и менеджеров. -
security: Проверки конфигурации, связанной с безопасностью. -
signals: Проверки объявлений сигналов и регистрации обработчиков. -
staticfiles: Проверки конфигурацииdjango.contrib.staticfiles. -
templates: Проверки конфигурации, связанной с шаблонами. -
translation: Проверки конфигурации, связанной с переводом. -
urls: Проверка конфигурации URL.
Некоторые проверки могут быть зарегистрированы с несколькими тегами.
Основные системные проверки
Обратная совместимость
Проверки совместимости предупреждают о потенциальных проблемах, которые могут возникнуть после обновления Django.
-
2_0.W001: Ваш шаблон URL
<pattern>содержитroute, начинающийся с^, или заканчивающийся на$. Это, вероятно, ошибка при миграции с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.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не могут принимать пустые значения, если не допускаются null-значения, так как пустые значения сохраняются как null. -
fields.E160: Опции
auto_now,auto_now_add, иdefaultвзаимоисключают друг друга. Должна быть присутствовать только одна из них. - fields.W161: Указано исправленное значение по умолчанию.
-
fields.W162:
<database>не поддерживает индекс базы данных в столбцах<field data type>. -
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: Аргумент
FileFieldupload_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.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_SSL_REDIRECTне будут иметь эффекта. -
security.W002: У вас нет
django.middleware.clickjacking.XFrameOptionsMiddlewareв вашемMIDDLEWARE, поэтому ваши страницы не будут передаваться с заголовком'x-frame-options'. Если нет веских причин, по которым ваш сайт должен передаваться во фрейме, следует включить этот заголовок, чтобы помочь предотвратить атаки clickjacking. -
security.W003: Похоже, вы не используете встроенную защиту Django от межсайтовых запросов с подделкой (CSRF) посредством 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. -
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'. Значение по умолчанию'SAMEORIGIN', но если нет веских причин, по которым ваш сайт должен передавать другие части себя во фрейме, необходимо изменить его на'DENY'. -
security.W020: В развертывании
ALLOWED_HOSTSне должно быть пустым. -
security.W021: Вы не установили настройку
SECURE_HSTS_PRELOADвTrue. Без этого ваш сайт не может быть добавлен в предварительный список браузера.
Сигналы
-
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.
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>и поле 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для использования приложения администрирования.
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: Объект 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>должно быть вызываемым объектом, а не экземпляром, чтобы оно не использовалось совместно между всеми экземплярами поля.
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/2.2/ref/checks/