Vista de lista: vistas basadas en funciones Django

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/ 
 

django-listview-check-models-instances

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/ 
 

django-listview-function-based

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/ 
 

django-listview-order-by

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/ 
 

django-listview-models

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, 
 

django-listview-function-based2

Publicación traducida automáticamente

Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *