TemplateView
Parte de la sección Vistas basadas en clases del Journey de Django de Coddy. Lección 2 de 18.
El sitio de ofertas de empleo necesita una página «Acerca de» que solo muestre una plantilla. Django tiene una clase para eso, TemplateView. Su método get() ya está escrito: muestra la plantilla indicada en template_name. Un sitio de recetas guarda sus preguntas frecuentes en recipes/templates/recipes/pages/faq.html:
from django.views.generic import TemplateView
class FaqView(TemplateView):
template_name = "recipes/pages/faq.html"Esa es toda la vista. Django llama vistas genéricas a sus clases de vista ya preparadas. Configuras una con atributos de clase como template_name, y el código que escribió Django los lee.
template_name es el nombre que pasarías a render(): la ruta del archivo después de templates/. Si omites una carpeta, la página falla con TemplateDoesNotExist. La ruta es como la de cualquier vista basada en clases: path("faq/", views.FaqView.as_view(), name="faq").
Desafío
FácilMuestra la plantilla preparada jobs/templates/jobs/about.html en /about/.
- En
jobs/views.py, añadeAboutView, unaTemplateViewque la renderice. - En
jobs/urls.py, añade la ruta"about/"con el nombreabout.
Abre /about/: dice Job Board lists jobs at small tech companies in Berlin, Lisbon and London.
Pruébalo tú mismo
from django.shortcuts import render
from django.views import View
from .models import Job
class HomeView(View):
def get(self, request):
count = Job.objects.count()
return render(request, "jobs/home.html", {"count": count})
Todas las lecciones de Vistas basadas en clases
Practica por tu cuenta: Playground de Django