Инфраструктура управления системой

Платформа управления системой - это набор статических элементов управления для проверки проектов Django. Он обнаруживает распространенные проблемы и дает советы по их устранению. Инфраструктура расширяема, так что вы можете легко добавлять свои собственные элементы управления.

Для получения подробной информации о том, как добавлять собственные проверки и интегрировать их с системными проверками Django, см. Руководство по проверке системы .

Справочник по API

CheckMessage

classCheckMessage ( 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 потому что он подразумевается именем класса.

classDebug ( msg , hint = None , obj = None , id = None )
classInfo ( msg , hint = None , obj = None , id = None )
classWarning ( msg , hint = None obj = None , id = None )
classError ( msg , hint = None , obj = None , id = None )
classCritical ( msg , hint = None , obj = None , id = None )

Предопределенные метки

Системные элементы управления Django организованы с использованием следующих меток:

  • admin : проверка всех объявлений администрации сайтов.
  • async_support : Асинхронные проверки конфигурации.
  • caches : контролирует конфигурацию, относящуюся к кешам (буферная память).
  • compatibility : выявление потенциальных проблем с обновлениями.
  • database : Проверяет проблемы конфигурации, связанные с базой данных. Проверки базы данных не запускаются по умолчанию, потому что они делают больше, чем статический анализ кода, как обычные проверки. Они запускаются только migrate командой или если вы указываете настроенные псевдонимы базы данных с помощью --database параметра при вызове check команды.
  • models : элементы управления, управляющие определениями моделей, полей и менеджеров.
  • security : управляет конфигурацией, связанной с безопасностью.
  • signals : элементы управления объявлениями сигналов и записями менеджера.
  • staticfiles : управляет конфигурацией, связанной с django.contrib.staticfiles .
  • templates : управляет конфигурацией, связанной с шаблонами.
  • translation : проверьте конфигурацию, связанную с переводами.
  • urls : контролирует конфигурацию URL-адресов.

Некоторые элементы управления можно сохранить под несколькими тегами.

Изменено в Django 3.1:

async_support Тэг был добавлен.

Изменено в Django 3.1:

Теперь database проверки выполняются только для псевдонимов базы данных, указанных с помощью параметра.check --database

Проверка системы ядра

Асинхронная поддержка

Новое в Django 3.1.

Следующие проверки подтверждают вашу настройку для управления асинхронным кодом :

Обратная совместимость

Проверки совместимости предупреждают вас о потенциальных проблемах, которые могут возникнуть после обновления Django.

  • 2_0.W001 : шаблон URL <pattern> имеет содержащий маршрут (?P< , начинающийся с ^ или заканчивающийся на $ . Вероятно, это был недосмотр при переключении с url() на path() .

Кеши

Следующие проверки подтверждают CACHES правильность настройки параметра:

  • caches.E001  : Вы должны определить кеш 'default' в своих настройках CACHES .

База данных

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 должен быть повторяющимся элементом, возвращающим кортежи .(valeur réelle, nom convivial)
  • 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 должны декларироваться primary_key=True .
  • fields.E110  : поля BooleanField не принимают нулевые значения. Этот элемент управления появился до того, как в Django 2.1 была добавлена ​​поддержка нулевых значений.
  • fields.E120  : поля CharField должны определять атрибут max_length .
  • fields.E121  : max_length должно быть положительным целым числом.
  • fields.W122  : max_length игнорируется при использовании для поля .<type de champ entier>
  • 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 : <base_de_données> не поддерживает индексы по столбцам .<type données champ>
  • fields.E170 : По умолчанию BinaryField не может быть строкой. Вместо этого используйте двоичный контент.
  • fields.E180 : <database> не поддерживает JSONField 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  : Параметр upload_to из FileField должен быть относительный путь, а не абсолютный путь.
  • fields.E210  : Невозможно использовать, ImageField потому что Pillow не установлен.

Модели

  • models.E001  : <swappable> нет в форме étiquette_app.nom_app .
  • models.E002  : <RÉGLAGE> относится к <modèle> , который не установлен или является абстрактным.
  • models.E003  : Модель имеет два идентичных отношения «многие ко многим» через промежуточную модель <étiquette_app>.<modèle> .
  • models.E004  : id может использоваться как имя поля, только если это поле также определяет primary_key=True .
  • models.E005  : поле <nom_de_champ> родительской модели <modèle> конфликтует с полем <nom_de_champ> родительской модели <modèle> .
  • models.E006  : поле конфликтует с полем <nom_de_champ> модели <modèle> .
  • models.E007  : поле <nom_de_champ> имеет имя столбца <nom_de_colonne> , которое используется другим полем.
  • models.E008  : index_together должен быть списком или кортежем.
  • models.E009  : все элементы index_together должны быть списками или кортежами.
  • models.E010  : unique_together должен быть списком или кортежем.
  • models.E011 : все элементы unique_together должны быть списками или кортежами.
  • models.E012 : indexes/index_together/unique_together относится к несуществующему полю <nom_de_champ> .
  • models.E013  : indexes/index_together/unique_together относится к <nom_de_champ> типу ManyToManyField , но эти поля не поддерживаются для этой опции.
  • models.E014  : ordering должен быть кортежем или списком (даже если вы хотите отсортировать по одному полю).
  • models.E015 : ordering относится к несуществующему полю, связанному полю или поиску <nom_de_champ> .
  • models.E016  : indexes/index_together/unique_together относится к полю, <nom_de_champ> которое не является локальным для модели <modèle> .
  • models.E017  : Прокси- модель <modèle> содержит поля модели.
  • models.E018  : автоматически созданное имя столбца слишком длинное для поля <champ> . Максимальная длина указана <longueur_maximum> для базы данных <alias> .
  • models.E019 : автоматически созданное имя столбца слишком длинное для поля «многие ко многим» <champ> . Максимальная длина указана <longueur_maximum> для базы данных <alias> .
  • models.E020  : метод класса <modèle>.check() в настоящее время перегружен.
  • models.E021  : ordering и order_with_respect_to не могут использоваться одновременно.
  • models.E022  : <fonction> содержит отложенную ссылку на <étiquette_app>.<modèle> , но приложение <étiquette_app> не установлено или не предоставляет модель <modèle> .
  • models.E023  : <modèle> имя модели не может начинаться или заканчиваться знаком подчеркивания, поскольку оно конфликтует с синтаксисом запроса.
  • models.E024  : <modèle> название модели не может содержать двойное подчеркивание, поскольку оно конфликтует с синтаксисом запроса.
  • fields.E025  : свойство <nom_de_propriété> конфликтует с аксессором связанного поля.
  • models.E026  : модель не может иметь более одного поля с primary_key=True .
  • models.W027 : не поддерживает проверочные ограничения.<base de données>
  • models.E028 : db_table <table_bd> используется несколько моделей: .<liste de modèles>
  • models.E029 : имя индекса <index> не уникально для модели <modèle> .
  • models.E030 : имя индекса <index> не является уникальным среди моделей: <liste_modèles> .
  • models.E031 : имя ограничения <contrainte> не уникально для модели <modèle> .
  • models.E032 : имя ограничения <contrainte> не уникально среди моделей <liste_modèles> .
  • models.E033  : <index> имя индекса не может начинаться с символа подчеркивания или числа.
  • models.E034 : <index> Имя индекса не может содержать больше <max_length> символов.
  • models.W035 : db_table <table_bd> используется несколько моделей: .<liste de modèles>
  • models.W036 : <database> не поддерживает уникальные ограничения с условиями.
  • models.W037 : <database> не поддерживает индексы с условиями.
  • models.W038 : <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, можно рассмотреть возможность установки значения и включения HSTS (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, связанные с безопасностью, будут уязвимы для атак.
  • 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 . Использование файла cookie сеанса затрудняет HttpOnly попытки атак межсайтового сценария вторгнуться в сеансы пользователя.
  • security.W014 : django.contrib.sessions.middleware.SessionMiddleware в MIDDLEWARE , но вы не установили SESSION_COOKIE_HTTPONLY в True . Использование файла cookie сеанса затрудняет HttpOnly попытки атак межсайтового сценария вторгнуться в сеансы пользователя.
  • security.W015  : SESSION_COOKIE_HTTPONLY не установлено True . Использование файла cookie сеанса затрудняет HttpOnly попытки атак межсайтового сценария вторгнуться в сеансы пользователя.
  • security.W016  : CSRF_COOKIE_SECURE не установлено True . Использование безопасного файла cookie CSRF затрудняет попытки снифферов сетевого трафика украсть токен CSRF.
  • security.W017  : CSRF_COOKIE_HTTPONLY не установлено True . Использование файла cookie CSRF затрудняет HttpOnly попытки атак с использованием межсайтовых сценариев украсть токен CSRF. Этот элемент управления удален в Django 1.11, потому что настройка не дает конкретных преимуществ.CSRF_COOKIE_HTTPONLY
  • security.W018  : DEBUG не следует устанавливать значение True для развернутого приложения Django.
  • 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 недействительно.

Следующие проверки подтверждают правильность настройки параметров безопасности:

Сигналы

  • signal.E001  : <gestionnaire> подключен к сигналу <signal> с отложенной ссылкой на отправителя , но не установлен или не предоставляет модель .<étiquette app>.<modèle> <étiquette app> <modèle>

Шаблоны

Следующие проверки подтверждают TEMPLATES правильность настройки параметра:

  • templates.E001  : присутствует в ваших настройках, но также присутствует в . Удалить или вариант .'APP_DIRS': True TEMPLATES 'loaders' OPTIONS APP_DIRS 'loaders'
  • templates.E002  : string_if_invalid in должно быть строкой, но в настоящее время это: ( ).TEMPLATES OPTIONS {valeur} {type}

Перевод

В вашей конфигурации перевода выполняются следующие проверки:

  • translation.E001 : установка LANGUAGE_CODE содержит недопустимое значение: <valeur> .
  • translation.E002 : код языка в условиях LANGUAGES не является действительным: <valeur> .
  • translation.E003 : код языка в условиях LANGUAGES_BIDI не является действительным: <valeur> .
  • translation.E004 : значение, содержащееся в настройке, LANGUAGE_CODE отсутствует в настройке LANGUAGES .

URL

В конфигурации вашего URL-адреса выполняются следующие проверки:

  • urls.W001 : шаблон URL <pattern> используется include() с выражением, route заканчивающимся на $ . Удалите доллар из выражения, route чтобы избежать проблем при включении URL-адресов.
  • urls.W002 : шаблон URL <pattern> имеет выражение, route начинающееся с / . Удалите эту косую черту, поскольку она не нужна. Если на этот шаблон ссылается a include() , убедитесь, что он include() заканчивается на / .
  • urls.W003  : URL шаблон <pattern> имеет имя , name содержащее : . Удалите эти двоеточия, чтобы избежать неоднозначных ссылок на пространства имен.
  • urls.E004 : шаблон URL <motif> недействителен. Убедитесь, что urlpatterns это список экземпляров path() или re_path() .
  • urls.W005  : пространство имен URL не уникально. Некоторые URL-адреса в этом пространстве имен могут быть неразрешимыми.<espace de nom>
  • urls.E006  : settings MEDIA_URL / STATIC_URL должен заканчиваться косой чертой.
  • urls.E007 : handlerXXX Пользовательское представление 'chemin.vers.vue' не принимает правильное количество параметров (…).
  • urls.E008 : handlerXXX Пользовательское представление 'chemin.vers.vue' не может быть импортировано.

Управление приложением contrib

admin

Все проверки интерфейса администратора выполняются под ярлыком admin .

Следующие проверки выполняются для любого класса (или подкласса) ModelAdmin , зарегистрированного на сайте администрирования:

  • admin.E001  : значение raw_id_fields должно быть списком или кортежем.
  • admin.E002  : значение raw_id_fields[n] относится к <nom_de_champ> , которое не является атрибутом <modèle> .
  • 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 <nom_de_champ> потому что это поле вручную определяет шаблон отношения.
  • 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] относится к <nom_de_champ> , которое не является атрибутом <modèle> .
  • admin.E020  : Значение filter_vertical[n]/filter_vertical[n] должно быть полем «многие ко многим».
  • admin.E021  : Значение radio_fields должно быть словарём.
  • admin.E022  : значение radio_fields относится к <nom_de_champ> , которое не является атрибутом <modèle> .
  • admin.E023  : значение radio_fields относится к <nom_de_champ> , которое не является ключом ForeignKey и не имеет определения choices .
  • admin.E024  : Значение radio_fields[<nom_de_champ>] должно быть либо admin.HORIZONTAL или admin.VERTICAL .
  • admin.E025  : значение view_on_site должно быть либо исполняемым объектом, либо логическим значением.
  • admin.E026  : Значение prepopulated_fields должно быть словарём.
  • admin.E027  : значение prepopulated_fields относится к <nom_de_champ> , которое не является атрибутом <modèle> .
  • admin.E028  : значение prepopulated_fields относится к <nom_de_champ> , которое не должно быть поле DateTimeField , ForeignKey , OneToOneField или ManyToManyField .
  • admin.E029  : значение prepopulated_fields[<nom_de_champ>] должно быть списком или кортежем.
  • admin.E030  : значение prepopulated_fields относится к <nom_de_champ> , которое не является атрибутом <modèle> .
  • admin.E031  : Значение ordering должно быть списком или кортежем.
  • admin.E032 : значение ordering имеет маркер случайного порядка ? , но также содержит другие поля.
  • admin.E033  : значение ordering относится к <nom_de_champ> , которое не является атрибутом <modèle> .
  • admin.E034 : значение readonly_fields должно быть списком или кортежем.
  • admin.E035 : значение readonly_fields[n] не вызывается, атрибут или атрибут .<ModelAdmin class> <model>
  • admin.E036 : значение autocomplete_fields должно быть списком или кортежем.
  • admin.E037 : значение autocomplete_fields[n] относится к <nom_de_champ> , которое не является атрибутом <modèle> .
  • admin.E038 : значение autocomplete_fields[n] должно быть внешним ключом или полем «многие ко многим».
  • admin.E039 : <modèle> Чтобы на него ссылались, необходимо зарегистрировать административный класс модели <modeladmin>.autocomplete_fields .
  • admin.E040 : <modeladmin> необходимо определить, search_fields потому что на него ссылается <autre_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> , которое не является исполняемым объектом, атрибутом , атрибутом или методом .<classe ModelAdmin> <modèle>
  • 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> , которое не относится к полю Field .
  • 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> , которое не является атрибутом <modèle> .
  • admin.E122  : Значение list_editable[n] относится к <label> , которого нет в list_display .
  • admin.E123  : Значение list_editable[n] не может быть одновременно in list_editable и in list_display_links .
  • admin.E124  : значение list_editable[n] относится к самому первому полю в list_display ( <label> ), которое не может использоваться, пока не list_display_links будет определено.
  • admin.E125  : list_editable[n] относится к значению <nom_de_champ> , которое нельзя изменить в интерфейсе администрирования.
  • admin.E126 : значение search_fields должно быть списком или кортежем.
  • admin.E127  : значение date_hierarchy относится к <nom_de_champ> , которое не относится к полю.
  • admin.E128  : Значение date_hierarchy должно быть полем DateField или DateTimeField .
  • admin.E129 : <modeladmin> необходимо определить метод has_<foo>_permission() действия <action> .
  • admin.E130 : __name__ атрибуты действий, определенных в, <modeladmin> должны быть уникальными. Имя <name> не уникальное.

InlineModelAdmin

Следующие проверки выполняются для каждого InlineModelAdmin элемента, зарегистрированного как встроенный элемент в классе ModelAdmin .

  • admin.E201  : Вы не можете исключить поле, <nom_de_champ> потому что это внешний ключ для родительской модели <étiquette_application>.<modèle> .
  • 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  : 'champ_ct' относится к <label> , которое не является полем <modèle> .
  • admin.E302  : 'champ_ct_fk' относится к <label> , которое не является полем <modèle> .
  • admin.E303  : <modèle> нет ключа GenericForeignKey .
  • admin.E304  : <modèle> не имеет ключа, GenericForeignKey использующего <nom_de_champ> поле типа контента и поле идентификатора объекта <nom_de_champ> .

AdminSite

Для объекта по AdminSite умолчанию выполняются следующие проверки :

  • admin.E401  : django.contrib.contenttypes должен быть включен,INSTALLED_APPS чтобы иметь возможность использовать приложение для администрирования.
  • admin.E402  : django.contrib.auth.context_processors.auth должен быть включен в DjangoTemplates ( TEMPLATES ), если активен механизм аутентификации по умолчанию, чтобы использовать приложение администрирования.
  • admin.E403 : Для использования административного приложения 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  : <champ> должен быть уникальным, потому что он обозначен как USERNAME_FIELD .
  • auth.W004  : <champ> обозначен как USERNAME_FIELD , но не уникален.
  • auth.E005  : Кодовое имя разрешения <nom_code> конфликтует со встроенным разрешением шаблона <modèle> .
  • auth.E006  : Кодовое имя разрешения <nom_code> дублируется для модели <modèle> .
  • auth.E007  : Атрибут verbose_name шаблона <modèle> не должен превышать 244 символа, чтобы его автоматические имена разрешений не превышали 255 символов.
  • auth.E008  : Именованное разрешение <nom> модели <modèle> превышает 255 символов.
  • auth.C009  : должен быть атрибутом или свойством, а не методом. Это проблема безопасности, потому что с помощью метода анонимные пользователи будут считаться аутентифицированными!<modèle utilisateur>.is_anonymous
  • auth.C010  : должен быть атрибутом или свойством, а не методом. Это проблема безопасности, потому что с помощью метода анонимные пользователи будут считаться аутентифицированными!<modèle utilisateur>.is_authenticated
  • auth.E011 : имя модели <model> должно состоять не более чем из 93 символов, чтобы его встроенные имена разрешений были не более 100 символов.
  • auth.E012 : кодовое имя <codename> модели доступа <model> превышает 100 символов.

contenttypes

Если модель содержит ключ GenericForeignKey или связь, выполняются следующие проверки GenericRelation :

  • contenttypes.E001 : ID объекта GenericForeignKey указывает на <field> несуществующее поле .
  • contenttypes.E002 : Тип содержимого GenericForeignKey относится к <field> несуществующему полю .
  • contenttypes.E003  : <champ> не является ключом ForeignKey .
  • contenttypes.E004  : <field> это не ForeignKey червь contenttypes.ContentType .
  • contenttypes.E005 : имена шаблонов не могут превышать 100 символов.

postgres

К полям шаблона применяются следующие элементы управления django.contrib.postgres :

  • postgres.E001 : в базовом поле таблицы есть ошибки: ...
  • postgres.E001 : базовое поле таблицы не может быть полем отношения.
  • postgres.E003 : <field> default должен быть вызываемым, а не экземпляром, чтобы он не разделялся между всеми экземплярами поля. Эта проверка была изменена на fields.E010 в Django 3.1 .

sites

На каждой модели с помощью менеджера выполняются следующие проверки CurrentSiteManager :

  • sites.E001  : Не удалосьCurrentSiteManager найти указанное поле <nom_de_champ> .
  • sites.E002  : CurrentSiteManager нельзя использовать, <champ> потому что это не внешний ключ или поле "многие ко многим".

staticfiles

Следующие проверки подтверждают django.contrib.staticfiles правильность настройки:

  • staticfiles.E001 : параметр STATICFILES_DIRS не является кортежем или списком.
  • staticfiles.E002 : Параметр STATICFILES_DIRS не должен содержать параметр STATIC_ROOT .
  • staticfiles.E003 : Префикс <préfixe> в настройке STATICFILES_DIRS не может заканчиваться косой чертой.

Copyright ©2021 All rights reserved