Vista de lista se refiere a una vista (lógica) para enumerar todas las instancias de una tabla de la base de datos o en particular en un orden particular. Se utiliza para mostrar múltiples tipos de datos en una sola página o vista, por ejemplo, productos en una página de comercio electrónico. Django proporciona soporte extraordinario para vistas de lista, pero veamos cómo se hace manualmente a través de una vista basada en funciones. Este artículo gira en torno a la Vista de lista que involucra conceptos como Django Forms, Django Models .
Para la vista de lista, necesitamos un proyecto con algunos modelos y varias instancias que se mostrarán.
Vista de lista de Django: vistas basadas en funciones
Ilustración de cómo crear y usar la vista de lista usando un ejemplo. Considere un proyecto llamado geeksforgeeks que tenga una aplicación llamada geeks.
Consulte los siguientes artículos para comprobar cómo crear un proyecto y una aplicación en Django.
Después de tener un proyecto y una aplicación, creemos un modelo del cual crearemos instancias a través de nuestra vista. En geeks/models.py,
Python3
# import the standard Django Model # from built-in library from django.db import models # declare a new model with a name "GeeksModel" class GeeksModel(models.Model): # fields of the model title = models.CharField(max_length = 200) description = models.TextField() # renames the instances of the model # with their title name def __str__(self): return self.title
Después de crear este modelo, necesitamos ejecutar dos comandos para crear la base de datos para el mismo.
Python manage.py makemigrations Python manage.py migrate
Ahora vamos a crear algunas instancias de este modelo usando shell, ejecute form bash,
Python manage.py shell
Ingrese los siguientes comandos
>>> from geeks.models import GeeksModel >>> GeeksModel.objects.create( title="title1", description="description1").save() >>> GeeksModel.objects.create( title="title2", description="description2").save() >>> GeeksModel.objects.create( title="title2", description="description2").save()
Ahora tenemos todo listo para el back-end. Verifique que las instancias se hayan creado desde http://localhost:8000/admin/geeks/geeksmodel/
Vamos a crear una vista y una plantilla para el mismo. En geeks/views.py,
Python3
from django.shortcuts import render # relative import of forms from .models import GeeksModel def list_view(request): # dictionary for initial data with # field names as keys context ={} # add the dictionary during initialization context["dataset"] = GeeksModel.objects.all() return render(request, "list_view.html", context)
Cree una plantilla en templates/list_view.html,
html
<div class="main"> {% for data in dataset %}. {{ data.title }}<br/> {{ data.description }}<br/> <hr/> {% endfor %} </div>
Veamos qué hay en http://localhost:8000/
Bingo..!! la vista de lista funciona bien. También se pueden mostrar elementos filtrados u ordenarlos en diferentes órdenes según varias características. Ordenemos los artículos de manera inversa.
En geeks/views.py,
Python3
from django.shortcuts import render # relative import of models from .models import GeeksModel def list_view(request): # dictionary for initial data with # field names as keys context ={} # add the dictionary during initialization context["dataset"] = GeeksModel.objects.all().order_by("-id") return render(request, "list_view.html", context)
order_by para organizar instancias en diferentes órdenes
Ahora visite http://localhost:8000/
filtro para mostrar instancias selectivas
Vamos a crear una instancia diferente para mostrar cómo funciona el filtro. Correr
Python manage.py shell
Ahora, crea otra instancia,
from geeks.models import GeeksModel GeeksModel.objects.create(title = "Naveen", description = "GFG is Best").save()
Ahora visite http://localhost:8000/
Filtremos estos datos a aquellos que contienen la palabra «título» en su título.
En geeks/views.py ,
Python3
from django.shortcuts import render # relative import of forms from .models import GeeksModel def list_view(request): # dictionary for initial data with # field names as keys context ={} # add the dictionary during initialization context["dataset"] = GeeksModel.objects.all().filter( title__icontains = "title" ) return render(request, "list_view.html", context)
Ahora visite http://localhost:8000/ nuevamente,
Publicación traducida automáticamente
Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA