Фреймворк проверки системы ¶
Фреймворк системной проверки - это набор статических проверок для проверки проектов 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 ) ¶
Встроенные теги ¶
Системные проверки Django организованы с использованием следующих тегов:
admin
: Проверяет любые объявления админки.async_support
: Проверяет конфигурацию, связанную с асинхронностью.caches
: Проверяет конфигурацию, связанную с кешем.compatibility
: Отмечает потенциальные проблемы с обновлением версий.database
: Проверяет проблемы конфигурации, связанные с базой данных. Проверки базы данных не запускаются по умолчанию, потому что они делают больше, чем статический анализ кода, как обычные проверки. Они запускаются толькоmigrate
командой или если вы укажете настроенные псевдонимы базы данных с помощью--database
параметра при вызовеcheck
команды.models
: Проверка определений модели, поля и менеджера.security
: Проверяет конфигурацию, связанную с безопасностью.signals
: Проверяет объявления сигналов и регистрации обработчиков.sites
: Проверяетdjango.contrib.sites
конфигурацию.staticfiles
: Проверяетdjango.contrib.staticfiles
конфигурацию.templates
: Проверяет конфигурацию, связанную с шаблоном.translation
: Проверяет конфигурацию, связанную с переводом.urls
: Проверяет конфигурацию URL.
Некоторые проверки могут быть зарегистрированы с несколькими тегами.
async_support
Тэг был добавлен.
Теперь database
проверки выполняются только для псевдонимов базы данных, указанных с помощью параметра.check --database
sites
Тэг был добавлен.
Проверка основной системы ¶
Асинхронная поддержка ¶
Следующие проверки подтверждают вашу настройку для поддержки асинхронного режима :
- async.E001 : не следует устанавливать
DJANGO_ALLOW_ASYNC_UNSAFE
переменная среды в развертывании. Это отключает асинхронную защиту .
Обратная совместимость ¶
Проверки совместимости предупреждают о потенциальных проблемах, которые могут возникнуть после обновления Django.
- 2_0.W001 : Ваш шаблон URL
<pattern>
имеет ,route
который содержит(?P<
, начинается с^
, или заканчивается$
. Вероятно, это была ошибка при переходе сurl()
наpath()
.
Кеши ¶
Следующие проверки подтверждают CACHES
правильность настройки вашего параметра:
- caches.E001 : Вы должны определить
'default'
кеш в своихCACHES
настройках. - caches.W002 : ваша
<cache>
конфигурация может раскрыть ваш кеш или привести к повреждению ваших данных, потому что егоLOCATION
совпадения / находятся внутри / containsMEDIA_ROOT
/STATIC_ROOT
/STATICFILES_DIRS
. - caches.W003 : Ваш
<cache>
кешLOCATION
относительный. Вместо этого используйте абсолютный путь.
База данных ¶
MySQL и MariaDB ¶
Если вы используете MySQL или MariaDB, будут выполнены следующие проверки:
- mysql.E001 : MySQL / MariaDB не позволяет уникальным
CharField
s иметьmax_length
> 255. Эта проверка была изменена наmysql.W003
в Django 3.1, поскольку реальный максимальный размер зависит от многих факторов. - mysql.W002 : Строгий режим MySQL / MariaDB не установлен для подключения к базе данных
<alias>
. См. Также Настройка sql_mode . - mysql.W003 : MySQL / MariaDB может не разрешать уникальным
CharField
s иметьmax_length
> 255.
Поля модели ¶
- fields.E001 : имена полей не должны заканчиваться подчеркиванием.
- fields.E002 : Имена полей не должны содержать
"__"
. - fields.E003 :
pk
зарезервированное слово, которое нельзя использовать в качестве имени поля. - fields.E004 :
choices
должно быть итерируемым (например, списком или кортежем). - fields.E005 :
choices
должен быть повторяемым возвращаемым кортежем .(actual value, human readable name)
- fields.E006 :
db_index
должно бытьNone
,True
илиFalse
. - fields.E007 : Первичные ключи не должны иметь
null=True
. - fields.E008 : Все
validators
должны быть вызываемыми. - fields.E009 :
max_length
слишком мало, чтобы уместить самое длинное значение вchoices
(<count>
символов). - fields.E010 :
<field>
default должен быть вызываемым, а не экземпляром, чтобы он не использовался всеми экземплярами поля. - fields.E100 :
AutoField
s должен установить primary_key = True. - fields.E110 :
BooleanField
s не принимают нулевые значения. Эта проверка появилась до того, как в Django 2.1 была добавлена поддержка нулевых значений. - fields.E120 :
CharField
s должен определятьmax_length
атрибут. - fields.E121 :
max_length
должно быть положительным целым числом. - fields.W122 :
max_length
игнорируется при использовании с .<integer field type>
- fields.E130 :
DecimalField
s должен определятьdecimal_places
атрибут. - fields.E131 :
decimal_places
должно быть целым неотрицательным числом. - fields.E132 :
DecimalField
s должен определятьmax_digits
атрибут. - fields.E133 :
max_digits
должно быть неотрицательным целым числом. - fields.E134 :
max_digits
должно быть больше или равноdecimal_places
. - fields.E140 :
FilePathField
s должны быть либоallow_files
илиallow_folders
установлен в значение True. - fields.E150 :
GenericIPAddressField
s не может принимать пустые значения, если пустые значения не разрешены, так как пустые значения сохраняются как пустые. - fields.E160 : варианты
auto_now
,auto_now_add
иdefault
взаимно исключают друг друга. Может присутствовать только один из этих вариантов. - fields.W161 : предоставлено фиксированное значение по умолчанию.
- fields.W162 :
<database>
не поддерживает индекс базы данных по столбцам.<field data type>
- fields.E170 :
BinaryField
«sdefault
не может быть строкой. Вместо этого используйте байтовое содержимое. - fields.E180 :
<database>
не поддерживаетJSONField
s. - fields.E190 :
<database>
не поддерживает сортировку базы данных по<field_type>
s. - fields.E900 :
IPAddressField
был удален, за исключением поддержки в исторических миграциях. - fields.W900 :
IPAddressField
больше не рекомендуется. Его поддержка (за исключением исторических миграций) будет удалена в Django 1.9. Эта проверка появилась в Django 1.7 и 1.8 . - fields.W901 :
CommaSeparatedIntegerField
больше не рекомендуется. Его поддержка (за исключением исторических миграций) будет удалена в Django 2.0. Эта проверка появилась в Django 1.10 и 1.11 . - fields.E901 :
CommaSeparatedIntegerField
удалено, за исключением поддержки в исторических миграциях. - fields.W902 :
FloatRangeField
устарело и будет удалено в Django 3.1. Эта проверка появилась в Django 2.2 и 3.0 . - fields.W903 :
NullBooleanField
устарело. Его поддержка (за исключением исторических миграций) будет удалена в Django 4.0. - fields.W904 :
django.contrib.postgres.fields.JSONField
устарело. Его поддержка (за исключением исторических миграций) будет удалена в Django 4.0.
Поля файла ¶
- 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 :
constraints/indexes/index_together/unique_together
относится к несуществующему полю .<field name>
- models.E013 :
constraints/indexes/index_together/unique_together
относится к a , но s не поддерживаются для этой опции.ManyToManyField
<field name>
ManyToManyField
- models.E014 :
ordering
должен быть кортежем или списком (даже если вы хотите упорядочить только по одному полю). - models.E015 :
ordering
относится к несуществующему полю, связанному полю или поиску .<field name>
- models.E016 :
constraints/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>
- models.W036 :
<database>
не поддерживает уникальные ограничения с условиями. - models.W037 :
<database>
не поддерживает индексы с условиями. - models.W038 :
<database>
не поддерживает отложенные уникальные ограничения. - models.W039 :
<database>
не поддерживает уникальные ограничения с неключевыми столбцами. - models.W040 :
<database>
не поддерживает индексы с неключевыми столбцами. - models.E041 :
constraints
относится к объединенному полю .<field name>
- models.W042 : автоматически созданный первичный ключ, используемый по умолчанию, когда не определяется тип первичного ключа
django.db.models.AutoField
. - models.W043 :
<database>
не поддерживает индексы для выражений.
Безопасность ¶
Проверки безопасности не делают ваш сайт безопасным. Они не проверяют код, не обнаруживают вторжений и не делают ничего особенно сложного. Скорее, они помогают выполнить автоматизированный, простой контрольный список, который может помочь вам повысить безопасность вашего сайта.
Некоторые из этих проверок могут не подходить для вашей конкретной конфигурации развертывания. Например, если вы выполняете перенаправление 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'
заголовком. Если нет веских причин для показа вашего сайта во фрейме, вам следует рассмотреть возможность включения этого заголовка, чтобы предотвратить атаки кликджекинга. - security.W003 : Похоже, вы не используете встроенную в Django защиту от подделки межсайтовых запросов через промежуточное ПО (
django.middleware.csrf.CsrfViewMiddleware
не в вашем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
, поэтому ваши страницы не будут обслуживаться с заголовком. Вам следует рассмотреть возможность включения этого заголовка, чтобы активировать XSS-фильтрацию браузера и помочь предотвратить XSS-атаки. Эта проверка удалена в Django 3.0, поскольку современные браузеры больше не поддерживают заголовок.'X-XSS-Protection: 1; mode=block'
X-XSS-Protection
- security.W008 : Ваша
SECURE_SSL_REDIRECT
настройка не установлена наTrue
. Если ваш сайт не должен быть доступен как через SSL, так и через соединения без SSL, вы можете либо установить этот параметр,True
либо настроить балансировщик нагрузки или обратный прокси-сервер для перенаправления всех подключений на HTTPS. - security.W009 : ваш
SECRET_KEY
содержит менее 50 символов, менее 5 уникальных символов или префикс,'django-insecure-'
указывающий, что он был автоматически сгенерирован Django. Пожалуйста, создайте длинный и случайный файл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
. ИспользованиеHttpOnly
файла cookie сеанса затрудняет перехват сеансов пользователей при атаках с использованием межсайтовых сценариев. - security.W014 : У вас есть
django.contrib.sessions.middleware.SessionMiddleware
в вашейMIDDLEWARE
, но вы не установилиSESSION_COOKIE_HTTPONLY
вTrue
. ИспользованиеHttpOnly
файла cookie сеанса затрудняет перехват сеансов пользователей при атаках с использованием межсайтовых сценариев. - security.W015 :
SESSION_COOKIE_HTTPONLY
не установленоTrue
. ИспользованиеHttpOnly
файла cookie сеанса затрудняет перехват сеансов пользователей при атаках с использованием межсайтовых сценариев. - security.W016 :
CSRF_COOKIE_SECURE
не установленоTrue
. Использование файла cookie CSRF, предназначенного только для безопасного использования, затрудняет для снифферов сетевого трафика кражу токена CSRF. - security.W017 :
CSRF_COOKIE_HTTPONLY
не установленоTrue
. ИспользованиеHttpOnly
файла cookie CSRF затрудняет кражу токена 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
недопустимое значение параметра.
Следующие проверки подтверждают правильность настройки параметров безопасности:
- security.E100 :
DEFAULT_HASHING_ALGORITHM
должно быть'sha1'
или'sha256'
. - security.E101 : представление сбоя CSRF
'path.to.view'
не принимает правильное количество аргументов. - security.E102 :
'path.to.view'
Не удалось импортировать представление сбоя CSRF .
Сигналы ¶
- signal.E001 :
<handler>
был подключен к<signal>
сигналу с ленивой ссылкой на отправителя , но приложение не установлено или не предоставляет модель .<app label>.<model>
<app label>
<model>
Перевод ¶
В вашей конфигурации перевода выполняются следующие проверки:
- 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_horizontal[n]
относится к , которое не является атрибутом .<field name>
<model>
- admin.E020 : Значение
filter_vertical[n]/filter_horizontal[n]
должно быть полем «многие ко многим». - admin.E021 : Значение
radio_fields
должно быть словарём. - admin.E022 : значение
radio_fields
относится к , которое не является атрибутом .<field name>
<model>
- admin.E023 : значение
radio_fields
относится к , которое не является экземпляром и не имеет определения.<field name>
ForeignKey
choices
- admin.E024 : Значение должно быть либо
или .
radio_fields[<field name>]
admin.HORIZONTAL
admin.VERTICAL
- admin.E025 : значение
view_on_site
должно быть либо вызываемым, либо логическим значением. - admin.E026 : Значение
prepopulated_fields
должно быть словарём. - admin.E027 : значение
prepopulated_fields
относится к , которое не является атрибутом .<field name>
<model>
- admin.E028 : значение
prepopulated_fields
относится к , которое не должно быть полем , а , а или полем.<field name>
DateTimeField
ForeignKey
OneToOneField
ManyToManyField
- admin.E029 : значение должно быть списком или кортежем.
prepopulated_fields[<field name>]
- admin.E030 : значение
prepopulated_fields
относится к , которое не является атрибутом .<field name>
<model>
- admin.E031 : значение
ordering
должно быть списком или кортежем. - admin.E032 : значение
ordering
имеет маркер случайного порядка?
, но также содержит другие поля. - admin.E033 : значение
ordering
относится к , которое не является атрибутом .<field name>
<model>
- admin.E034 : Значение
readonly_fields
должно быть списком или кортежем. - admin.E035 : значение
readonly_fields[n]
не является вызываемым, атрибутом или атрибутом .<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>
должны быть уникальными. Имя<name>
не уникальное.
InlineModelAdmin
¶
Следующие проверки выполняются для всех,
InlineModelAdmin
которые зарегистрированы как встроенные в ModelAdmin
.
- admin.E201 : нельзя исключить поле , потому что это внешний ключ для родительской модели .
<field name>
<app_label>.<model>
- admin.E202 :
<model>
уже неForeignKey
к ./ имеет более чем один к . Вы должны указать атрибут.<parent model>
<model>
ForeignKey
<parent model>
fk_name
- admin.E203 : значение
extra
должно быть целым числом. - admin.E204 : значение
max_num
должно быть целым числом. - admin.E205 : значение
min_num
должно быть целым числом. - admin.E206 : Значение
formset
должно наследоваться отBaseModelFormSet
.
GenericInlineModelAdmin
¶
Следующие проверки выполняются для всех,
GenericInlineModelAdmin
которые зарегистрированы как встроенные в ModelAdmin
.
- admin.E301 :
'ct_field'
ссылки<label>
, на которых нет поля<model>
. - admin.E302 :
'ct_fk_field'
ссылки<label>
, на которых нет поля<model>
. - admin.E303 :
<model>
нетGenericForeignKey
. - admin.E304 :
<model>
не имеетGenericForeignKey
поля типа содержимого и поля идентификатора объекта .<field name>
<field name>
AdminSite
¶
По умолчанию выполняются следующие проверки
AdminSite
:
- admin.E401 :
django.contrib.contenttypes
должен быть включенINSTALLED_APPS
, чтобы использовать приложение администратора. - admin.E402 :
django.contrib.auth.context_processors.auth
необходимо включить вDjangoTemplates
(TEMPLATES
), если используется серверная часть аутентификации по умолчанию, чтобы использовать приложение администратора. - admin.E403 : для использования приложения администратора
django.template.backends.django.DjangoTemplates
необходимо настроить экземплярTEMPLATES
. - admin.E404 :
django.contrib.messages.context_processors.messages
необходимо включить вDjangoTemplates
(TEMPLATES
), чтобы использовать приложение администратора. - admin.E405 :
django.contrib.auth
должен быть включенINSTALLED_APPS
, чтобы использовать приложение администратора. - admin.E406 :
django.contrib.messages
должен быть включенINSTALLED_APPS
, чтобы использовать приложение администратора. - admin.E408 :
django.contrib.auth.middleware.AuthenticationMiddleware
должен быть включенMIDDLEWARE
, чтобы использовать приложение администратора. - admin.E409 :
django.contrib.messages.middleware.MessageMiddleware
должен быть включенMIDDLEWARE
, чтобы использовать приложение администратора. - admin.E410 :
django.contrib.sessions.middleware.SessionMiddleware
должен быть включенMIDDLEWARE
, чтобы использовать приложение администратора. - admin.W411 :
django.template.context_processors.request
необходимо включить вDjangoTemplates
(TEMPLATES
), чтобы использовать боковую панель навигации администратора.
auth
¶
- auth.E001 :
REQUIRED_FIELDS
должен быть списком или кортежем. - auth.E002 : поле с именем
USERNAME_FIELD
для пользовательской модели пользователя не должно быть включеноREQUIRED_FIELDS
. - auth.E003 :
<field>
должен быть уникальным, потому что он назван какUSERNAME_FIELD
. - auth.W004 :
<field>
имеет имяUSERNAME_FIELD
, но не является уникальным. - auth.E005 : разрешение под кодовым названием
<codename>
конфликтует со встроенным разрешением для модели<model>
. - auth.E006 : Кодовое имя разрешения
<codename>
дублируется для модели<model>
. - auth.E007 : Модель
verbose_name
of<model>
должна содержать не более 244 символов, чтобы ее встроенные имена разрешений были не более 255 символов. - auth.E008 : имя
<name>
модели<model>
превышает 255 символов. - auth.C009 : должен быть атрибутом или свойством, а не методом. Игнорирование этого - проблема безопасности, поскольку анонимные пользователи будут считаться аутентифицированными!
<User model>.is_anonymous
- auth.C010 : должен быть атрибутом или свойством, а не методом. Игнорирование этого - проблема безопасности, так как анонимные пользователи будут считаться аутентифицированными!
<User model>.is_authenticated
- auth.E011 : имя модели
<model>
должно содержать не более 93 символов, чтобы имена встроенных разрешений были не более 100 символов. - auth.E012 : Код разрешения
<codename>
модели<model>
превышает 100 символов.
contenttypes
¶
Следующие проверки выполняются, если модель содержит
GenericForeignKey
или
GenericRelation
:
- contenttypes.E001 :
GenericForeignKey
ID объекта ссылается на несуществующее поле<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>
default должен быть вызываемым, а не экземпляром, чтобы он не разделялся между всеми экземплярами поля. Эта проверка была изменена наfields.E010
в Django 3.1 .
sites
¶
Следующие проверки выполняются на любой модели с использованием
CurrentSiteManager
:
- sites.E001 :
CurrentSiteManager
не удалось найти поле с именем .<field name>
- sites.E002 :
CurrentSiteManager
использовать нельзя, так<field>
как это не внешний ключ или поле "многие ко многим".
Следующие проверки подтверждают django.contrib.sites
правильность настройки:
- sites.E101 :
SITE_ID
значение должно быть целым числом.
staticfiles
¶
Следующие проверки подтверждают django.contrib.staticfiles
правильность настройки:
- staticfiles.E001 :
STATICFILES_DIRS
параметр не является кортежем или списком. - staticfiles.E002 :
STATICFILES_DIRS
параметр не должен содержатьSTATIC_ROOT
параметр. - staticfiles.E003 : префикс
<prefix>
вSTATICFILES_DIRS
настройке не должен заканчиваться косой чертой.