Атрибут template_name
Атрибут template_name применяется в классе TemplateView
для определения HTML-шаблона, который будет использоваться
для рендеринга ответа на HTTP-запрос. Этот атрибут
является обязательным для класса TemplateView,
так как он указывает Django, какой именно шаблон следует
загрузить и отобразить. Значение атрибута должно быть
строкой, содержащей путь к файлу шаблона относительно
директорий, указанных в настройках TEMPLATES.
Синтаксис
from django.views.generic import TemplateView
class MyView(TemplateView):
template_name = "path/to/template.html"
Пример
Давайте создадим представление, которое отображает
главную страницу с использованием шаблона 'index.html':
from django.views.generic import TemplateView
class HomeView(TemplateView):
template_name = "index.html"
Затем добавим путь к этому представлению в файле
urls.py:
from django.urls import path
from .views import HomeView
urlpatterns = [
path("", HomeView.as_view(), name="home"),
]
Пример
Атрибут template_name может быть переопределен
динамически в методе get_template_names.
Рассмотрим пример, где выбор шаблона зависит от
условия:
from 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"]
Результат выполнения запроса для аутентифицированного пользователя:
"Authenticated user sees authenticated.html"
Результат выполнения запроса для анонимного пользователя:
"Anonymous user sees anonymous.html"
Смотрите также
-
класс
TemplateView,
который является базовым классом для отображения шаблонов -
метод
get_context_data,
который передает контекстные данные в шаблон -
класс
ListView,
который отображает список объектов с использованием шаблона -
класс
DetailView,
который отображает детальную информацию об одном объекте