ListView
Parte de la sección Vistas basadas en clases del Journey de Django de Coddy. Lección 4 de 18.
El tablero necesita una página que muestre todos los trabajos. Una lista de las filas de una tabla es algo tan común que Django ya creó la vista: ListView. Indícale un modelo y consultará las filas y las mostrará en una plantilla. Una lista para un sitio de recetas, en la aplicación recipes:
from django.views.generic import ListView
class RecipeListView(ListView):
model = Recipe
context_object_name = "recipes" # {% for recipe in recipes %}
ordering = ["minutes"] # primero las más rápidasSi no se especifica template_name, muestra recipes/recipe_list.html: la etiqueta de la aplicación, el nombre del modelo en minúsculas y luego _list.html. Las filas se reciben como object_list y recipe_list, o con el nombre indicado en context_object_name.
ordering acepta lo mismo que order_by(), así que ["-minutes"] pondría primero la receta que tarda más. Si no se especifica, las filas aparecen en el orden de la base de datos.
Desafío
FácilAñade la página de empleos. Su plantilla, jobs/job_list.html, está lista y recorre jobs.
- En
jobs/views.py, unaJobListView, unaListViewdeJob, con la lista llamadajobsy la fechapostedmás reciente primero. Mantén la plantilla predeterminada. - En
jobs/urls.py, una ruta"jobs/"llamadalist.
Pulsa Run y abre /jobs/.
Pruébalo tú mismo
from django.views.generic import TemplateView
from .models import Job
class HomeView(TemplateView):
template_name = "jobs/home.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["count"] = Job.objects.count()
context["latest"] = Job.objects.order_by("-posted").first()
return context
class AboutView(TemplateView):
template_name = "jobs/about.html"
Todas las lecciones de Vistas basadas en clases
Practica por tu cuenta: Playground de Django