Last modified: Jan 10, 2023 By Alexander Williams
Understand How to Use django get_object_or_404
In this tutorial, we're going to learn how to use Django get_object_or_404.
1. What is Django get_object_or_404
Get_object_or_404: is a method that returns a 404 error if the object does not exist.
2. How to Use Django get_object_or_404
Before coding example, let's first create a simple model and adding some records.
models.py:
class Comments(models.Model): name = models.CharField(max_length=300) comment = models.TextField() date = models.DateField(auto_now_add=False)
Adding some records:

Let's try to get a record that's not exists with the get() method and see what happens.
views.py:
def get_comment(request): #get comment pk = 555 obj = Comments.objects.get(pk=555) return HttpResponse(obj)
result:

Let's do the same thing but now with the get_object_or_404 method and see the difference.
views.py
from django.shortcuts import get_object_or_404 def get_comment(request): #get comment idpk = 555 obj = get_object_or_404(Comments, pk=555) return HttpResponse(obj)
result:

Voila!
I think you understood it!.
So if you want to get an object and you don't want to get an error when the record doesn't exist, you should use the get_object_or_404 method.
3. Customizing Django get_object_or_404 message
As you know, we can't customize the get_object_or_404 method's error, but we can do it with the Http404 exception, let's see an example.
from django.http import Http404 def get_comment(request): try: obj = Comments.objects.get(pk=555) except Comments.DoesNotExist: raise Http404("the obj does not exist.")
result:

4. How to Solve get_object_or_404 is not defined error
when you use the get_object_or_404 method without importing it, you will face this issue:

To solve this issue, you need to import the method before your view.
from django.shortcuts import get_object_or_404 # your view