Comprobar si el objeto existe en Django

Salman Mehmood 15 febrero 2024
Comprobar si el objeto existe en Django

En esta explicación del problema común, verá cómo verificar si un objeto existe en el modelo y también aprenderá cómo manejar las excepciones para mostrar el error conveniente al usuario.

Use el método exists() para verificar si un objeto existe en el modelo en Django

Por ejemplo, tenemos un modelo que se llama Audio_store. Esta clase tiene un campo de registro que contiene FileField.

class Audio_store(models.Model):
    record = models.FileField(upload_to="documents/")

    class Meta:
        db_tables = "Audia_store"

Ahora necesitamos verificar si algún valor está presente o no. Django tiene una función integrada para verificar si un objeto existe o no.

La función exists() se puede usar para diferentes situaciones, pero nosotros la usamos con la condición if.

Supongamos que tenemos la función Audio_get en el archivo views.py, y en esta función devolveremos una respuesta HTTP si la condición es Verdadera o Falsa. Veamos si está funcionando o no.

def Audio_get(request):
    vt = Audio_store.objects.all()
    if vt.exists():
        return HttpResponse("object found")
    else:
        return HttpResponse("object not found")

Antes de ejecutar el servidor, debemos asegurarnos de haber agregado la URL en el archivo urls.py. Cuando presionamos la URL, extraerá la función definida del archivo views.py, y en nuestro caso, definimos la función Audio_get.

URL código Python

Ejecutemos el servidor, abramos su navegador y sigamos con el host local donde se ejecuta su servidor Django.

Navegador abierto

Podemos ver que no se ha producido ningún error y obtuvimos una respuesta HTTP.

Para manejar un objeto faltante desde una URL dinámica, podemos usar la clase get_object_or_404. Cuando intentamos usar un objeto que no existe, vemos una excepción que no es fácil de usar.

Podemos mostrar el error del usuario (“página no encontrada”) en lugar de la excepción incorporada de Django; será un error válido. Para usar este error, tomamos un código de ejemplo para generar un error si el servidor Django no puede encontrar el objeto.

from .models import Product
from django.shortcuts import render, get_object_or_404


def dynamic_loockup_view(request, id):
    # raise an exception "page not found"
    obj = get_object_or_404(Product, id=id)
    OUR_CONTEXT = {"object": obj}
    return render(request, "products/product_detail.html", OUR_CONTEXT)

Va a generar un error de página 404.

Error de pagina no encontrada

Una forma más de hacer esto es ponerlo dentro de un bloque intentar. Necesitamos importar la clase Http404, que generará esa página 404 como esta clase get_object_or_404.

from django.http import Http404
from django.shortcuts import render


def dynamic_loockup_view(request, id):
    try:
        obj = Product.objects.get(id=id)
    except Product.DoesNotExist:
        # raise an exception "page not found"
        raise Http404
    OUR_CONTEXT = {"object": obj}
    return render(request, "products/product_detail.html", OUR_CONTEXT)

También levantará una página 404 usando Http404 cuando el Producto u objeto modelo no exista.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Django Object