TemplateView - Django
Nos temas anteriores, discutimos como, ao receber uma solicitação, o sistema de roteamento seleciona a view apropriada, que, por sua vez, utiliza um template para gerar a resposta. Contudo, em situações onde o objetivo é apenas retornar o conteúdo de um template sem lógica adicional, não é necessário definir uma função para a view. O Django oferece o TemplateView
Configurando Templates
Considere os seguintes exemplos de templates básicos. Suponha que temos o arquivo about.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello Django</title>
</head>
<body>
<h1>About</h1>
</body>
</html>
E outro arquivo, contact.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello Django</title>
</head>
<body>
<h1>Contact</h1>
</body>
</html>
A estrutura do projeto para este exemplo ficaria assim:
PROGRAMICIO hello/ |-- migrations/ |-- templates/ |-- about.html |-- contact.html |-- __init__.py |-- admin.py |-- apps.py |-- models.py |-- tests.py |-- views.py programicio/ |-- __init__.py |-- asgi.py |-- settings.py |-- urls.py |-- wsgi.py
No arquivo urls.py
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path("about/", TemplateView.as_view(template_name="about.html")),
path("contact/", TemplateView.as_view(template_name="contact.html")),
]
Aqui, o TemplateView
as_view()
template_name
Quando as URLs correspondentes são acessadas, os templates definidos em about.html
contact.html
Passando Dados para os Templates
O TemplateView
extra_context
as_view()
from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [
path("about/", TemplateView.as_view(template_name="about.html",
extra_context={"header": "Sobre o site"})),
path("contact/", TemplateView.as_view(template_name="contact.html")),
]
No caso acima, o objeto header
about.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Hello Django</title>
</head>
<body>
<h1>{{ header }}</h1>
</body>
</html>
Conclusão
O TemplateView
extra_context
TemplateView