РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
526 of 818 menu

Исключение TemplateSyntaxError

Исключение TemplateSyntaxError выбрасывается, когда движок шаблонов Django обнаруживает синтаксическую ошибку при парсинге или компиляции шаблона. Это исключение наследуется от встроенного исключения SyntaxError и содержит информацию о месте возникновения ошибки в шаблоне. Наиболее часто возникает при неправильном использовании тегов, фильтров, переменных или при нарушении правил синтаксиса шаблонов.

Синтаксис

django.template.TemplateSyntaxError

Исключение принимает следующие параметры:

TemplateSyntaxError(message, source=None, line=None, column=None, filename=None)

где:

  • message - сообщение об ошибке;
  • source - исходный код шаблона;
  • line - номер строки с ошибкой;
  • column - номер колонки с ошибкой;
  • filename - имя файла шаблона.

Пример

Рассмотрим шаблон, содержащий закрывающий тег без соответствующего открывающего:

from django.template import Template, Context template_code = """ <ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul> """ try: template = Template(template_code) context = Context({'items': ['one', 'two', 'three']}) res = template.render(context) except TemplateSyntaxError as e: print("Error:", e.message) print("Line:", e.line) print("Source:", e.source)

Результат выполнения кода:

"Error: Invalid block tag on line 3: 'endfor', expected 'empty' or 'endfor'. Did you forget to register or load this tag?" "Line: 3" "Source: {% for item in items %}"

Пример

Ошибка возникает при использовании несуществующего фильтра в шаблоне:

from django.template import Template, Context template_code = """ <p>{{ text|unsupported_filter }}</p> """ try: template = Template(template_code) context = Context({'text': 'Hello World'}) res = template.render(context) except TemplateSyntaxError as e: print("Error:", e.message) print("Line:", e.line) print("Filename:", e.filename)

Результат выполнения кода:

"Error: Could not parse the remainder: '|unsupported_filter' from 'text|unsupported_filter'" "Line: 2" "Filename: None"

Пример

Неправильное использование тега if с неверным синтаксисом условий:

from django.template import Template, Context template_code = """ {% if user.is_authenticated and user.is_admin or %} <p>Admin panel</p> {% endif %} """ try: template = Template(template_code) context = Context({'user': None}) res = template.render(context) except TemplateSyntaxError as e: print("Error:", e.message) print("Line:", e.line)

Результат выполнения кода:

"Error: Invalid block tag on line 2: 'or', expected 'and' or 'or'" "Line: 2"

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

  • исключение TemplateDoesNotExist,
    которое возникает при отсутствии запрашиваемого шаблона
  • исключение VariableDoesNotExist,
    которое возникает при обращении к несуществующей переменной в шаблоне
  • исключение ImproperlyConfigured,
    которое возникает при некорректной конфигурации приложения
  • исключение Http404,
    которое выбрасывается при отсутствии запрашиваемого ресурса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить