SystemCheckError

Исключение SystemCheckError является подклассом CommandError и возбуждается в процессе выполнения системных проверок Django. Оно возникает при обнаружении критических ошибок в проекте, которые делают его неработоспособным. К таким ошибкам относятся проблемы с моделями, неправильные настройки в файле settings.py, несоответствия в миграциях, а также ошибки в пользовательских проверках.

Синтаксис

python# Исключение возбуждается автоматически системой проверки
# или может быть вызвано вручную:
raise SystemCheckError(messages)

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

Пример

Рассмотрим ситуацию, когда в модели допущена ошибка в определении поля. Например, указан несуществующий параметр:

pythonfrom django.db import models

class Article(models.Model):
  title = models.CharField(max_length=100)
  # Ошибка: неправильное имя параметра
  content = models.TextField(max_lenght=500)

При попытке запустить сервер или выполнить проверку, Django вызовет исключение:

python$ python manage.py check
"SystemCheckError: System check identified some issues"

Пример

Ошибка также возникает при проблемах с файлом настроек. Например, при отсутствии обязательного параметра:

python# settings.py
# Ошибка: отсутствует обязательная настройка
SECRET_KEY = ''

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

python$ python manage.py check --deploy
"SystemCheckError: System check identified some issues"

Пример

Исключение может быть вызвано и при ошибках в пользовательских проверках. Создадим собственную проверку для модели:

pythonfrom 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$ python manage.py check
"SystemCheckError: System check identified some issues"

Смотрите также

  • исключение CommandError,
    базовое исключение для ошибок команд управления
  • исключение ImproperlyConfigured,
    которое возникает при некорректной настройке приложения
  • исключение FieldError,
    которое вызывается при ошибках в именах полей модели
  • исключение TemplateDoesNotExist,
    которое возникает при отсутствии шаблона