Система проверок системы
Система проверок системы — это набор статических проверок для валидации проектов 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: Проверки конфигурации, связанной с шаблонами. -
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. -
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, установленное в 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.E200:
unique— некорректный аргумент дляFileField. Эта проверка удалена в Django 1.11. -
fields.E201:
primary_key— некорректный аргумент дляFileField. -
fields.E202: Аргумент
FileFieldвupload_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:
index_together/unique_togetherссылается на несуществующее поле<field name>. -
models.E013:
index_together/unique_togetherссылается наManyToManyField<field name>, ноManyToManyFieldне поддерживаются для этого параметра. -
models.E014:
orderingдолжно быть кортежем или списком (даже если вы хотите сортировать только по одному полю). -
models.E015:
orderingссылается на несуществующее поле<field name>. -
models.E016:
index_together/unique_togetherссылается на поле<field_name>, которое не локально для модели<model>. -
models.E017: Модель-прокси
<model>содержит поля модели. -
models.E018: Сгенерированное имя столбца слишком длинное для поля
<field>. Максимальная длина —<maximum length>для базы данных<alias>. -
models.E019: Сгенерированное имя столбца слишком длинное для поля «многие ко многим»
<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>не может содержать двойные нижние подчёркивания, так как это конфликтует с синтаксисом поиска запросов.
Безопасность
Проверки безопасности не делают ваш сайт безопасным. Они не проверяют код, не выполняют обнаружения вторжений и не выполняют ничего особенно сложного. Вместо этого они помогают выполнить автоматическую проверку простых ошибок. Они помогают вам помнить о простых вещах, которые улучшают безопасность вашего сайта.
Некоторые из этих проверок могут быть неподходящими для вашей конкретной конфигурации развертывания. Например, если вы перенаправляете 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 через 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. Использование защищенного куки сессии затрудняет перехват сессий пользователей сетевыми анализаторами. -
security.W011: У вас есть
django.contrib.sessions.middleware.SessionMiddlewareв вашемMIDDLEWARE, но вы не установилиSESSION_COOKIE_SECUREвTrue. Использование защищенного куки сессии затрудняет перехват сессий пользователей сетевыми анализаторами. -
security.W012:
SESSION_COOKIE_SECUREне установлен вTrue. Использование защищенного куки сессии затрудняет перехват сессий пользователей сетевыми анализаторами. -
security.W013: У вас есть
django.contrib.sessionsв вашемINSTALLED_APPS, но вы не установилиSESSION_COOKIE_HTTPONLYвTrue. ИспользованиеHttpOnlyкуки сессии затрудняет перехват сессий пользователей атаками типа XSS. -
security.W014: У вас есть
django.contrib.sessions.middleware.SessionMiddlewareв вашемMIDDLEWARE, но вы не установили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. ИспользованиеHttpOnlyкуки 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.
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должен находиться в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: Объект ID
GenericForeignKeyссылается на несуществующее поле<field>. -
contenttypes.E002: Тип содержимого
GenericForeignKeyссылается на несуществующее поле<field>. -
contenttypes.E003:
<field>не являетсяForeignKey. -
contenttypes.E004:
<field>не являетсяForeignKeyкcontenttypes.ContentType. - contenttypes.E005: Имена моделей должны быть не более 100 символов.
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.0/ref/checks/