Исключение TemplateDoesNotExist

Исключение TemplateDoesNotExist является подклассом Exception и возникает в системе шаблонов Django, когда запрашиваемый шаблон не может быть найден ни в одной из директорий, указанных в настройках шаблонизатора. Ошибка может происходить как при явном вызове функций загрузки шаблонов, так и при использовании встроенных механизмов рендеринга, таких как функции render и render_to_string.

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

Синтаксис

pythondjango.template.exceptions.TemplateDoesNotExist

Пример

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

pythonfrom django.template import loader

try:
    template = loader.get_template('nonexistent.html')
except loader.TemplateDoesNotExist as e:
    print(e)

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

python"TemplateDoesNotExist: nonexistent.html"

Пример

Исключение может возникнуть при использовании функции render в контроллере:

pythonfrom django.shortcuts import render
from django.template.exceptions import TemplateDoesNotExist

def article_list(request):
    try:
        return render(request, 'articles/list.html')
    except TemplateDoesNotExist as e:
        return HttpResponse(f"Template error: {e}", status=500)

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

python"Template error: TemplateDoesNotExist: articles/list.html"

Пример

Исключение может содержать подробную информацию о том, какие директории были проверены:

pythonfrom django.template import loader

try:
    template = loader.get_template('missing_template.html')
except loader.TemplateDoesNotExist as e:
    print(f"Error: {e}")
    print(f"Template name: {e.args[0]}")

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

python"Error: TemplateDoesNotExist: missing_template.html"
"Template name: missing_template.html"

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

  • исключение TemplateSyntaxError,
    которое возникает при синтаксических ошибках в шаблонах
  • исключение VariableDoesNotExist,
    которое возникает при обращении к несуществующей переменной в шаблоне
  • исключение NoReverseMatch,
    которое возникает при ошибке разрешения URL-имён в шаблонах
  • исключение Http404,
    которое часто используется вместе с шаблонами ошибок