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. Configuras una vista genérica estableciendo atributos de clase, 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ácilLa plantilla jobs/templates/jobs/about.html está lista. Muéstrala en /about/:
- En
jobs/views.py, unaAboutView, unaTemplateViewque la renderiza. - En
jobs/urls.py, una ruta"about/"llamadaabout.
Presiona Run y 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