Django Shortcuts – get_list_or_404()

Django is a popular web framework written in python, helps the web developers to create web applications efficiently. One of the most important features of Django is the built-in functions known as shortcuts. These shortcuts help in providing useful features for completing the task. In this article, we will be learning about one of the commonly used shortcuts in Django which is ‘get_list_or_404()’.

What is Django Shortcut Module?

This is a collection of useful functions which can be used for completing the operations such as rendering templates, handling errors, etc. Some of the commonly used shortcut module are render(), get_object_or_404(), get_list_or_404(), redirect(), etc. by using the shortcut module you don’t have to write lengthy codes, it will provide you a simple way for performing the task.

What is 'get_list_or_404()' and How to Use it?

The ‘get_list_or_404()’ is a shortcut function in Django that helps you to take or retrieve a list of objects from the database that will match the specific set of criteria. If this condition is not matched i.e. if the object is not found, it will raise a 404 error, this is a standard HTTP response code. This code indicates that the requested resource could not be found.

You have to import the ‘get_list_or_404()’ from the django.shortcuts module.

from django.shortcuts import get_list_or_404

After importing the function from the module you need to invoke it by passing the required arguments. Following is the syntax –

get_list_or_404(klass, *args, **kwargs)


  • Klass is the Model or, Manager or a QuerySet, from which we need to get the list.

  • *args holds the set of objects representing and a set of rules or criteria that the object should match.

  • **kwargs are the lookup parameters.

chapters = get_list_or_404(Chapters, published=True)

This code will help you recover a list of all ‘Chapters’ objects from the database where the ‘published’ field is ‘True’. If there is no object, a 404 error will be raised. Here you can also customize the error message by passing a ‘message’ parameter to the function.

chapters = get_list_or_404(Chapters, published=True, message= "No such Chapters found")

Now, if you want more details related to the database you can retrieve it using the QuerySet method. If you want more details related to the time, date, and whatever details you want. This method will help you to filter, order, aggregate, and manipulate data from the database. Hence, we use filter () method with ‘get_list_or_404()’.

You can add a single line of code for doing the same.

chapters = get.list_or_404(Chapter.objects.filter(published = True, publication_date__year= 2021))

Using it you can take a list of chapters that have been published in the year 2021. While doing it you may face some errors let’s look into them with the solution.

Errors and Solution

Following are the possible errors while working with Django –

  • AttributeError: This error occurs when you try to use a method that does not exist or is not defined in the object’s class.

  • NoReverseMatch: An invalid URL pattern is the cause of the error. Since get.list_or_404 uses the reverse() function to generate a URL for the 404 error page.

  • MultipleObjectsReturned: As the name defines if the query you are using returns more than one object you will experience this error. To fix it , you can use get() function instead of the filter() in your query, or you can make changes to your query and ask to return a list of objects.

For fixing such errors, first, review your codes and make sure the syntax is correct, URL patterns, and the attributes are correct. Django is a powerful web framework it has built-in error-handling tools as well, you can also use them to fix the error.

Advantages of using get_list_or_404()

  • By a single line code, you can retrieve a list of objects from the database hence it is a simple function which helps you to complete the task efficiently.

  • Since the framework is written in python the function is easy to use and the syntax is simple.

  • Provides an easy error handling system.

  • You can make changes to your error message, this can help in debugging the error easily.


In this article, we have briefly explained what get_list_or_404() Django shortcut is. Starting with basics we have covered each topic related to the get_list_or_404() function. We discussed the errors which are common while writing codes, advantages which this function provides to our Django application.

The uniqueness comes from its way of handling the error. Hence, get_list_or_404() is an easy and approachable way of retrieving our data from the database and becomes an important tool for building such web applications.

Updated on: 13-Sep-2023


Kickstart Your Career

Get certified by completing the course

Get Started