SystemCheckError
Исключение SystemCheckError является подклассом CommandError и возбуждается в процессе выполнения системных проверок Django. Оно возникает при обнаружении критических ошибок в проекте, которые делают его неработоспособным. К таким ошибкам относятся проблемы с моделями, неправильные настройки в файле settings.py, несоответствия в миграциях, а также ошибки в пользовательских проверках.
Синтаксис
# Исключение возбуждается автоматически системой проверки
# или может быть вызвано вручную:
raise SystemCheckError(messages)
Исключение принимает список сообщений об ошибках в качестве аргумента. Обычно оно не вызывается вручную в коде приложения, а генерируется автоматически при запуске сервера или выполнении команд управления, если проверка системы обнаружила проблемы.
Пример
Рассмотрим ситуацию, когда в модели допущена ошибка в определении поля. Например, указан несуществующий параметр:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
# Ошибка: неправильное имя параметра
content = models.TextField(max_lenght=500)
При попытке запустить сервер или выполнить проверку, Django вызовет исключение:
$ python manage.py check
"SystemCheckError: System check identified some issues"
Пример
Ошибка также возникает при проблемах с файлом настроек. Например, при отсутствии обязательного параметра:
# settings.py
# Ошибка: отсутствует обязательная настройка
SECRET_KEY = ''
Система проверки обнаружит пустой ключ и вызовет исключение с детальным сообщением:
$ python manage.py check --deploy
"SystemCheckError: System check identified some issues"
Пример
Исключение может быть вызвано и при ошибках в пользовательских проверках. Создадим собственную проверку для модели:
from django.core.checks import register, Error
@register()
def check_article_status(app_configs, **kwargs):
errors = []
from myapp.models import Article
if Article.objects.filter(status='draft').count() > 100:
errors.append(
Error(
'Too many draft articles',
obj=Article,
id='myapp.E001',
)
)
return errors
Если условие выполняется, проверка вернет ошибку, которая будет преобразована в исключение:
$ python manage.py check
"SystemCheckError: System check identified some issues"
Смотрите также
-
исключение
CommandError,
базовое исключение для ошибок команд управления -
исключение
ImproperlyConfigured,
которое возникает при некорректной настройке приложения -
исключение
FieldError,
которое вызывается при ошибках в именах полей модели -
исключение
TemplateDoesNotExist,
которое возникает при отсутствии шаблона