Система проверок фреймворка
Фреймворк системных проверок представляет собой набор статических проверок для валидации проектов 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]
Встроенные проверки
Встроенные теги
-
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/