Система проверок системы
Система проверок системы — это набор статических проверок для валидации проектов Django. Она обнаруживает распространённые проблемы и предлагает подсказки по их исправлению. Система расширяема, поэтому вы легко можете добавить свои собственные проверки.
Подробности о том, как добавить свои собственные проверки и интегрировать их с системами проверок Django, см. в руководстве по системе проверок Руководство по системе проверок.
Справочник API
CheckMessage
-
class CheckMessage(level, msg, hint=None, obj=None, id=None)[source]
Предупреждения и ошибки, генерируемые системами проверок, должны быть экземплярами CheckMessage. Экземпляр encapsulates одну ошибку или предупреждение, подлежащую отчету. Он также предоставляет контекст и подсказки, относящиеся к сообщению, а также уникальный идентификатор, используемый для целей фильтрации.
Аргументы конструктора:
-
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: Проверки конфигурации, связанной с шаблонами. -
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.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игнорируется при использовании сIntegerField. -
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. -
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.E200:
unique— недопустимый аргумент дляFileField. Эта проверка удалена в Django 1.11. -
fields.E201:
primary_key— недопустимый аргумент дляFileField. -
fields.E202: Аргумент
upload_toдляFileFieldдолжен быть относительным путём, а не абсолютным. -
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.
Безопасность
Проверки безопасности не гарантируют безопасность вашего сайта. Они не выполняют аудит кода, обнаружение вторжений или что-либо подобное сложное. Вместо этого они помогают выполнить автоматическую проверку простых моментов, которые улучшают безопасность вашего сайта.
Некоторые из этих проверок могут быть неприменимы к вашей конкретной конфигурации развертывания. Например, если вы перенаправляете 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'. Если для вашего сайта нет веской причины отображаться во фрейме, рассмотрите включение этого заголовка для предотвращения атак кликджекинга. -
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. -
security.W008: Настройка
SECURE_SSL_REDIRECTне установлена вTrue. Если ваш сайт не должен быть доступен как по SSL, так и по протоколу без 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 сессии затрудняет перехват сессий пользователей атаками XSS. -
security.W014: У вас есть
django.contrib.sessions.middleware.SessionMiddlewareв вашемMIDDLEWARE, но вы не установилиSESSION_COOKIE_HTTPONLYвTrue. ИспользованиеHttpOnlycookie сессии затрудняет перехват сессий пользователей атаками XSS. -
security.W015:
SESSION_COOKIE_HTTPONLYне установлена вTrue. ИспользованиеHttpOnlycookie сессии затрудняет перехват сессий пользователей атаками XSS. -
security.W016:
CSRF_COOKIE_SECUREне установлена вTrue. Использование cookie CSRF только для защищенных соединений затрудняет перехват токена CSRF сетевыми анализаторами. -
security.W017:
CSRF_COOKIE_HTTPONLYне установлена вTrue. ИспользованиеHttpOnlycookie CSRF затрудняет перехват токена CSRF атаками XSS. Эта проверка удалена в 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}).
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должна заканчиваться слэшем.
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>.
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должен быть в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должно быть атрибутом или свойством, а не методом. Игнорирование этого является проблемой безопасности, так как анонимные пользователи будут считаться авторизованными!
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.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/ref/checks/