Open In App

List View - Function based Views Django

Last Updated : 15 May, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

A List View is a type of Django view used to display multiple instances of a model (i.e., rows from a database table). It is commonly used when you need to present a list of items on a page, for example, listing products on an eCommerce site. While Django provides built-in support for List Views using class-based views, this guide demonstrates how to implement it manually using function-based views.

Django List View - Function Based Views

Illustration of How to create and use List view using an example, consider a project named "geeksforgeeks" having an app named "geeks". 

Refer to the following articles to check how to create a project and an app in Django:

Step 1: Define a Model

Create a simple model in geeks/models.py:

Python
from django.db import models

class GeeksModel(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()

    def __str__(self):
        return self.title

Step 2: Apply Migrations

Run the following commands to create the corresponding database table

python manage.py makemigrations
python manage.py migrate

Step 3: Create Sample Data

Use Django's shell to create model instances:

python manage.py shell

Enter following commands in shell :

from geeks.models import GeeksModel

GeeksModel.objects.create(title="title1", description="description1")
GeeksModel.objects.create(title="title2", description="description2")
GeeksModel.objects.create(title="title3", description="description3")

django_shell1
Snapshot of the Command in Shell

Now we have everything ready for back end.

To verify that instances have been created, exit the shell using exit() command and run the development server using this command:

python manage.py runserver

After running the commad, visit the deelopment url- http://127.0.0.1:8000/

django-listview-check-models-instances

Step 4: Create the List View

In geeks/views.py, define a function-based view to fetch and render the model instances:

Python
from django.shortcuts import render
from .models import GeeksModel

def list_view(request):
    context = {
        "dataset": GeeksModel.objects.all()
    }
    return render(request, "list_view.html", context)

Step 5: Create the Template

In templates/list_view.html, add the following HTML to display the data:

html
<div class="main">
    {% for data in dataset %}
        <h3>{{ data.title }}</h3>
        <p>{{ data.description }}</p>
        <hr/>
    {% endfor %}
</div>

Run the development server and visit the URL http://127.0.0.1:8000/ to see the list view in action.

Output:

django-listview-function-based

Sorting the List (Descending Order)

You can order the results in reverse (newest first) by modifying the view:

Python
def list_view(request):
    context = {
        "dataset": GeeksModel.objects.all().order_by("-id")
    }
    return render(request, "list_view.html", context)

order_by("-id"): sorts the items in descending order of their ID.

Output:

django-listview-order-by

Filtering the List

You can also filter the data shown in the list view. For example, let’s add a new entry:

Lunch the shell using the below command:

python manage.py shell 

Enter the following commands in shell:

from geeks.models import GeeksModel

GeeksModel.objects.create(title = "Naveen", description = "GFG is Best").save()

django-listview-models

To display only items with the word “title” in their title, update the view:

Python
def list_view(request):
    context = {
        "dataset": GeeksModel.objects.filter(title__icontains="title")
    }
    return render(request, "list_view.html", context)

title__icontains="title" filters entries whose title contains the word "title", case-insensitively.

Run the development server and visit the URL http://127.0.0.1:8000/ again to see the filtered output.

django-listview-function-based2

Next Article
Practice Tags :

Similar Reads