Spec-Zone.ru › Django 1.9

Система проверок фреймворка

Фреймворк системных проверок представляет собой набор статических проверок для валидации проектов Django. Он обнаруживает распространённые проблемы и предлагает подсказки по их исправлению. Фреймворк расширяем, поэтому вы можете легко добавить собственные проверки.

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

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

CheckMessage

class CheckMessage(level, msg, hint, obj=None, id=None) [source]

Предупреждения и ошибки, генерируемые системными проверками, должны быть экземплярами CheckMessage. Экземпляр encapsulates a single reportable error or warning. Он также предоставляет контекст и подсказки, применимые к сообщению, а также уникальный идентификатор, используемый для фильтрации.

Аргументы конструктора:

level
Уровень важности сообщения. Используйте одно из предопределённых значений: DEBUG, INFO, WARNING, ERROR, CRITICAL. Если уровень равен или выше ERROR, Django предотвратит выполнение команд управления. Сообщения с уровнем ниже ERROR (т.е. предупреждения) выводятся в консоль, но могут быть отключены.
msg
Короткое (менее 80 символов) описание проблемы. Строка не должна содержать символы новой строки.
hint
Строка в одну строку, предоставляющая подсказку по исправлению проблемы. Если подсказка не может быть предоставлена или очевидна из сообщения об ошибке, подсказку можно опустить или использовать значение None.
obj
Необязательно. Объект, предоставляющий контекст для сообщения (например, модель, где была обнаружена проблема). Объект должен быть моделью, полем, менеджером или любым другим объектом, который определяет метод __str__ (в Python 2 вам нужно определить метод __unicode__). Метод используется при выводе всех сообщений, и его результат предшествует сообщению.
id
Необязательная строка. Уникальный идентификатор проблемы. Идентификаторы должны следовать шаблону applabel.X001, где X — одна из букв CEWID, указывающая на уровень важности сообщения (C для критических, E для ошибок). Число может быть назначено приложением, но должно быть уникальным в рамках этого приложения.

Существуют подклассы, которые облегчают создание сообщений с общими уровнями. При их использовании вы можете опустить аргумент level, так как он подразумевается именем класса.

class Debug(msg, hint, obj=None, id=None) [source]
class Info(msg, hint, obj=None, id=None) [source]
class Warning(msg, hint, obj=None, id=None) [source]
class Error(msg, hint, obj=None, id=None) [source]
class Critical(msg, hint, obj=None, id=None) [source]

Встроенные проверки

Встроенные теги

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

  • models: Проверки, управляющие определениями моделей, полей и менеджеров.
  • signals: Проверки объявления сигналов и регистрации обработчиков.
  • admin: Проверки любых объявлений админского интерфейса.
  • compatibility: Выделение потенциальных проблем при обновлении версии.
  • security: Проверки конфигурации, связанной с безопасностью.
  • templates: Проверки конфигурации, связанной с шаблонами.
  • caches: Проверки конфигурации, связанной с кэшем.
  • urls: Проверки конфигурации URL.

Некоторые проверки могут быть зарегистрированы с несколькими тегами.

Основные системные проверки

Модели

  • 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 <M2M field>. Максимальная длина составляет <maximum length> для базы данных <alias>.
  • models.E020: Метод <model>.check() в настоящее время перезаписан.
  • models.E021: ordering и order_with_respect_to не могут быть использованы вместе.

Поля

  • 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.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.E900: IPAddressField удалён, за исключением поддержки в исторических миграциях.
  • fields.W900: IPAddressField устарел. Поддержка его (кроме исторических миграций) будет удалена в Django 1.9. Эта проверка появилась в Django 1.7 и 1.8.

Поля файлов

  • fields.E200: unique — недействительный аргумент для FileField.
  • fields.E201: primary_key — недействительный аргумент для FileField.
  • fields.E210: Невозможно использовать ImageField, так как Pillow не установлен.

Связанные поля

  • fields.E300: Поле определяет отношение с моделью <model>, которая либо не установлена, либо является абстрактной.
  • fields.E301: Поле определяет отношение с моделью <model>, которая была заменена.
  • fields.E302: Доступ к полю <field name> конфликтует с полем <field name>.
  • fields.E303: Имя обратного запроса для поля <field name> конфликтует с полем <field name>.
  • fields.E304: Имя поля <field name> конфликтует с доступом к <field name>.
  • fields.E305: Имя поля <field name> конфликтует с именем обратного запроса для <field name>.
  • fields.E306: Связанное имя должно быть допустимым идентификатором Python или заканчиваться на '+'.
  • fields.E310: Никакое подмножество полей <field1>, <field2>, ... в модели <model> не является уникальным. Добавьте unique=True к любому из этих полей или добавьте хотя бы их подмножество в ограничение unique_together.
  • fields.E311: <model> должен установить unique=True, так как он ссылается на ForeignKey.
  • fields.E320: Поле указывает на on_delete=SET_NULL, но не может быть NULL.
  • fields.E321: Поле указывает на on_delete=SET_DEFAULT, но не имеет значения по умолчанию.
  • fields.E330: ManyToManyField не могут быть уникальными.
  • fields.E331: Поле указывает на отношение многие-ко-многим через модель <model>, которая не установлена.
  • fields.E332: Поля многие-ко-многим со вспомогательными таблицами не должны быть симметричными.
  • fields.E333: Модель используется как вспомогательная модель <model>, но имеет более двух внешних ключей к <model>, что неоднозначно. Вы должны указать, какие два внешних ключа Django должен использовать с помощью ключевого слова through_fields.
  • fields.E334: Модель используется как вспомогательная модель <model>, но имеет более одного внешнего ключа из <model>, что неоднозначно. Вы должны указать, какой внешний ключ Django должен использовать с помощью ключевого слова through_fields.
  • fields.E335: Модель используется как вспомогательная модель <model>, но имеет более одного внешнего ключа к <model>, что неоднозначно. Вы должны указать, какой внешний ключ Django должен использовать с помощью ключевого слова through_fields.
  • fields.E336: Модель используется как вспомогательная модель <model>, но не имеет внешних ключей к <model> или <model>.
  • fields.E337: Поле указывает на through_fields, но не предоставляет имена двух полей связи, которые должны использоваться для отношения через <model>.
  • fields.E338: Вспомогательная модель <through model> не имеет поля <field name>.
  • fields.E339: <model>.<field name> не является внешним ключом к <model>.
  • fields.W340: null не оказывает влияния на ManyToManyField.
  • fields.W341: ManyToManyField не поддерживает validators.
  • fields.W342: Установка unique=True на ForeignKey имеет тот же эффект, что и использование OneToOneField.

Сигналы

  • signals.E001: <handler> был подключен к сигналу <signal> с леничной ссылкой на отправителя <model>, который не установлен.

Совместимость с предыдущими версиями

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

  • 1_6.W001: Некоторые модульные тесты проекта могут не выполняться так, как ожидается. Эта проверка была удалена в Django 1.8 из-за ложных срабатываний.
  • 1_6.W002: BooleanField не имеет значения по умолчанию. Эта проверка была удалена в Django 1.8 из-за ложных срабатываний.
  • 1_7.W001: Django 1.7 изменил значения по умолчанию для MIDDLEWARE_CLASSES. django.contrib.sessions.middleware.SessionMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware, и django.contrib.messages.middleware.MessageMiddleware были удалены из значений по умолчанию. Если вашему проекту нужны эти промежуточные обработчики, вы должны настроить это значение. Эта проверка была удалена в Django 1.9.
  • 1_8.W001: Автономные настройки TEMPLATE_* были устаревшими в Django 1.8, и словарь TEMPLATES имеет приоритет. Вы должны поместить значения следующих настроек в свой словарь по умолчанию TEMPLATES: TEMPLATE_DIRS, ALLOWED_INCLUDE_ROOTS, TEMPLATE_CONTEXT_PROCESSORS, TEMPLATE_DEBUG, TEMPLATE_LOADERS, TEMPLATE_STRING_IF_INVALID.

Администрирование

Проверки администратора выполняются как часть тега admin.

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

  • admin.E001: Значение raw_id_fields должно быть списком или кортежем.
  • admin.E002: Значение raw_id_fields[n] ссылается на <field name>, что не является атрибутом <model>.
  • admin.E003: Значение raw_id_fields[n] должно быть ForeignKey или ManyToManyField.
  • 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] должно быть ManyToManyField.
  • 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 или 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>.

ModelAdmin

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

  • admin.E101: Значение save_as должно быть булевым.
  • admin.E102: Значение save_on_top должно быть булевым.
  • admin.E103: Значение inlines должно быть списком или кортежем.
  • admin.E104: <InlineModelAdmin class> должен наследоваться от BaseModelAdmin.
  • 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>, которое не является атрибутом <model>.
  • 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> и поля идентификатора объекта <field name>.

Auth

  • auth.E001: REQUIRED_FIELDS должно быть списком или кортежем.
  • auth.E002: Поле, названное USERNAME_FIELD для кастомной модели пользователя, не должно быть включено в REQUIRED_FIELDS.
  • auth.E003: <field> должно быть уникальным, поскольку оно названо USERNAME_FIELD.
  • auth.W004: <field> названо USERNAME_FIELD, но оно не уникально.

Типы содержимого

При наличии в модели GenericForeignKey или GenericRelation выполняются следующие проверки:

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

Безопасность

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

Некоторые из этих проверок могут быть неприменимы к вашей конкретной конфигурации развертывания. Например, если перенаправление HTTP на HTTPS выполняется балансировщиком нагрузки, постоянные предупреждения об отсутствии включения SECURE_SSL_REDIRECT будут раздражать. Используйте SILENCED_SYSTEM_CHECKS для отключения ненужных проверок.

Следующие проверки выполняются при использовании опции check --deploy:

  • security.W001: У вас отсутствует django.middleware.security.SecurityMiddleware в вашем MIDDLEWARE_CLASSES, поэтому настройки SECURE_HSTS_SECONDS, SECURE_CONTENT_TYPE_NOSNIFF, SECURE_BROWSER_XSS_FILTER и SECURE_SSL_REDIRECT не будут иметь эффекта.
  • security.W002: У вас отсутствует django.middleware.clickjacking.XFrameOptionsMiddleware в вашем MIDDLEWARE_CLASSES, поэтому ваши страницы не будут передаваться с заголовком 'x-frame-options'. Если нет веской причины для отображения вашего сайта во фрейме, рекомендуется включить этот заголовок для предотвращения атак с помощью кликджекинга.
  • security.W003: Похоже, вы не используете встроенную защиту Django от поддельных межсайтовых запросов (CSRF) через middleware (django.middleware.csrf.CsrfViewMiddleware отсутствует в вашем MIDDLEWARE_CLASSES). Включение 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. Использование защищённого только по SSL cookie для сессий затрудняет перехват злоумышленниками сессий пользователей.
  • security.W011: У вас есть django.contrib.sessions.middleware.SessionMiddleware в вашем MIDDLEWARE_CLASSES, но вы не установили SESSION_COOKIE_SECURE в значение True. Использование защищённого только по SSL cookie для сессий затрудняет перехват злоумышленниками сессий пользователей.
  • security.W012: SESSION_COOKIE_SECURE не установлено в True. Использование защищённого только по SSL cookie для сессий затрудняет перехват злоумышленниками сессий пользователей.
  • security.W013: У вас есть django.contrib.sessions в вашем INSTALLED_APPS, но вы не установили SESSION_COOKIE_HTTPONLY в значение True. Использование защищённого от XSS cookie для сессий затрудняет перехват сессий пользователей через атаки с использованием межсайтового скриптинга.
  • security.W014: У вас есть django.contrib.sessions.middleware.SessionMiddleware в вашем MIDDLEWARE_CLASSES, но вы не установили SESSION_COOKIE_HTTPONLY в значение True. Использование защищённого от XSS cookie для сессий затрудняет перехват сессий пользователей через атаки с использованием межсайтового скриптинга.
  • security.W015: SESSION_COOKIE_HTTPONLY не установлено в True. Использование защищённого от XSS cookie для сессий затрудняет перехват сессий пользователей через атаки с использованием межсайтового скриптинга.
  • security.W016: CSRF_COOKIE_SECURE не установлено в True. Использование защищённого только по SSL cookie для CSRF затрудняет перехват токена CSRF злоумышленниками.
  • security.W017: CSRF_COOKIE_HTTPONLY не установлено в True. Использование защищённого от XSS cookie для CSRF затрудняет перехват токена CSRF злоумышленниками через атаки с использованием межсайтового скриптинга.
  • security.W018: В рабочей среде не должно быть установлено DEBUG в значение True.
  • security.W019: У вас есть django.middleware.clickjacking.XFrameOptionsMiddleware в вашем MIDDLEWARE_CLASSES, но X_FRAME_OPTIONS не установлено в 'DENY'. Значение по умолчанию 'SAMEORIGIN', но если нет веской причины, чтобы ваш сайт был доступен во фрейме на других сайтах, измените его на 'DENY'.
  • security.W020: В рабочей среде ALLOWED_HOSTS не должно быть пустым.

Сайты

Ниже приведены проверки для любых моделей, использующих CurrentSiteManager:

  • sites.E001: CurrentSiteManager не смог найти поле с именем <field name>.
  • sites.E002: CurrentSiteManager не может использовать <field>, так как оно не является полем ForeignKey или ManyToManyField.

База данных

MySQL

Если вы используете MySQL, будут выполнены следующие проверки:

  • mysql.E001: MySQL не позволяет уникальным CharField иметь max_length > 255.

Шаблоны

Ниже приведены проверки, гарантирующие правильную настройку вашей настройки TEMPLATES:

  • templates.E001: У вас есть 'APP_DIRS': True в вашей настройке TEMPLATES, но также указано 'loaders' в OPTIONS. Либо удалите APP_DIRS, либо удалите опцию 'loaders'.

Кэши

Ниже приведены проверки, гарантирующие правильную настройку вашей настройки CACHES:

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

URL

Ниже приведены проверки для вашей конфигурации URL.

  • urls.W001: Ваша схема URL <pattern> использует include() с regex окончанием, содержащим $. Удалите знак доллара из regex, чтобы избежать проблем с включением URL-адресов.
  • urls.W002: Ваша схема URL <pattern> имеет regex, начинающийся с /. Удалите эту косую черту, так как она не нужна.
  • urls.W003: Ваша схема URL <pattern> имеет name, включающий :. Удалите двоеточие, чтобы избежать неоднозначных ссылок на пространства имён.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/ref/checks/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API