Menu
CoddyTech

ListView

Parte de la sección Vistas basadas en clases del Journey de Django de Coddy. Lección 4 de 18.

El consejo necesita una página que muestre todos los trabajos. Una lista de las filas de una tabla es tan común que Django ya escribió la vista: ListView. Dale un modelo y consultará las filas y las mostrará en una plantilla. La lista de 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"]             # los más rápidos primero

Si no se especifica template_name, se muestra recipes/recipe_list.html: la etiqueta de la aplicación, el nombre del modelo en minúsculas y luego _list.html. La plantilla siempre recibe las filas como object_list. También las recibe como recipe_list o, si estableces context_object_name, con ese nombre.

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 con la plantilla lista jobs/job_list.html, que recorre jobs.

  1. En jobs/views.py, añade JobListView, una ListView de Job. Llama jobs a su lista, coloca primero la fecha posted más reciente y conserva la plantilla predeterminada.
  2. En jobs/urls.py, añade la ruta "jobs/" con el nombre list.

Abre /jobs/: Python Developer aparece primero y Technical Writer, al final.

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