Menu
CoddyTech

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ápidas

Si 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.

challenge icon

Desafío

Fácil

Añade la página de empleos. Su plantilla, jobs/job_list.html, está lista y recorre jobs.

  • En jobs/views.py, una JobListView, una ListView de Job, con la lista llamada jobs y la fecha posted más reciente primero. Mantén la plantilla predeterminada.
  • En jobs/urls.py, una ruta "jobs/" llamada list.

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