TemplateView
у Django є потужним інструментом для роботи з шаблонами. Вона надає можливість використовувати шаблони для відображення даних, а також дозволяє гнучко додавати додатковий контекст для шаблонів. Основним класом для роботи з шаблонами є TemplateView
, який успадковує кілька важливих класів: TemplateResponseMixin
, ContextMixin
та View
.
Клас TemplateResponseMixin
надає функціональність для рендерингу шаблонів. Його основні властивості включають:
- template_name
, який визначає ім'я шаблону для рендерингу,
- template_engine
, що вказує на движок шаблонів,
- response_class
, який визначає клас відповіді (за замовчуванням це TemplateResponse
),
- content_type
, що задає тип вмісту відповіді.
Метод render_to_response(context, **response_kwargs)
використовується для рендерингу шаблону з переданим контекстом.
Клас ContextMixin
дозволяє додавати додаткові дані контексту до шаблону. Властивість extra_context
дозволяє додавати користувацький контекст, а метод get_context_data(**kwargs)
відповідає за підготовку даних контексту.
Клас View
є базовим для всіх представлень у Django і забезпечує диспетчеризацію HTTP методів, таких як get
, post
тощо. Властивість http_method_names
містить список дозволених HTTP методів, що може бути налаштовано.
Якщо подивитись на властивості, то важливо відзначити, що:
- template_name
та інші властивості визначають поведінку рендерингу шаблонів,
- extra_context
дозволяє додавати додаткові дані контексту,
- http_method_names
допомагає обмежити методи, які будуть оброблятися.
Послідовність викликів методів для GET запиту виглядає наступним чином:
1. as_view()
є точкою входу для обробки запиту, створюючи екземпляр представлення та викликаючи метод dispatch()
.
2. Метод setup()
ініціалізує спільні атрибути для всіх методів представлення, такі як request
, args
та kwargs
.
3. dispatch()
визначає HTTP метод (наприклад, GET, POST) і перенаправляє запит до відповідного обробника (наприклад, get()
).
4. get()
обробляє GET запити, викликаючи get_context_data()
для підготовки контексту для шаблону, а потім викликає render_to_response()
для рендерингу шаблону.
5. Метод get_context_data()
підготовлює контекст даних для шаблону, додавши додатковий контекст, якщо це необхідно.
6. Метод render_to_response()
здійснює рендеринг шаблону з переданими даними контексту.
7. Метод get_template_names()
повертає список шаблонів, які використовуються для рендерингу.
Приклад використання TemplateView
в Django:
from django.views.generic.base import TemplateView
class MyTemplateView(TemplateView):
templatename = "myapp/example.html" # Вказуємо шаблон для рендерингу
def get_context_data(self, **kwargs):
# Додаємо додаткові дані контексту до шаблону
context = super().get_context_data(**kwargs)
context['title'] = "Welcome to My Template View"
context['message'] = "This is a simple example of TemplateView."
return context
Цей приклад показує, як можна створити представлення, яке рендерить шаблон і передає додаткові дані контексту, такі як заголовок і повідомлення, до шаблону.
Перекладено з: Django Class based views: 02 TemplateView