Атрибут template_name

Атрибут template_name применяется в классе TemplateView для определения HTML-шаблона, который будет использоваться для рендеринга ответа на HTTP-запрос. Этот атрибут является обязательным для класса TemplateView, так как он указывает Django, какой именно шаблон следует загрузить и отобразить. Значение атрибута должно быть строкой, содержащей путь к файлу шаблона относительно директорий, указанных в настройках TEMPLATES.

Синтаксис

pythonfrom django.views.generic import TemplateView

class MyView(TemplateView):
  template_name = "path/to/template.html"

Пример

Давайте создадим представление, которое отображает главную страницу с использованием шаблона 'index.html':

pythonfrom django.views.generic import TemplateView

class HomeView(TemplateView):
  template_name = "index.html"

Затем добавим путь к этому представлению в файле urls.py:

pythonfrom django.urls import path
from .views import HomeView

urlpatterns = [
  path("", HomeView.as_view(), name="home"),
]

Пример

Атрибут template_name может быть переопределен динамически в методе get_template_names. Рассмотрим пример, где выбор шаблона зависит от условия:

pythonfrom django.views.generic import TemplateView

class DynamicTemplateView(TemplateView):
  template_name = "default.html"

  def get_template_names(self):
    if self.request.user.is_authenticated:
      return ["authenticated.html"]
    return ["anonymous.html"]

Результат выполнения запроса для аутентифицированного пользователя:

python"Authenticated user sees authenticated.html"

Результат выполнения запроса для анонимного пользователя:

python"Anonymous user sees anonymous.html"

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

  • класс TemplateView,
    который является базовым классом для отображения шаблонов
  • метод get_context_data,
    который передает контекстные данные в шаблон
  • класс ListView,
    который отображает список объектов с использованием шаблона
  • класс DetailView,
    который отображает детальную информацию об одном объекте