Überprüfen Sie, ob das Objekt in Django existiert

Salman Mehmood 15 Februar 2024
Überprüfen Sie, ob das Objekt in Django existiert

In dieser Erläuterung des allgemeinen Problems erfahren Sie, wie Sie überprüfen, ob ein Objekt im Modell vorhanden ist, und Sie erfahren auch, wie Sie mit Ausnahmen umgehen, um dem Benutzer den passenden Fehler anzuzeigen.

Verwenden Sie die exists()-Methode, um zu prüfen, ob ein Objekt im Modell in Django existiert

Wir haben zum Beispiel ein Modell namens Audio_store. Diese Klasse hat ein record-Feld, das FileField enthält.

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

    class Meta:
        db_tables = "Audia_store"

Jetzt müssen wir prüfen, ob ein Wert vorhanden ist oder nicht. Django hat eine eingebaute Funktion, um zu prüfen, ob ein Objekt existiert oder nicht.

Die exists()-Funktion kann für verschiedene Situationen verwendet werden, aber wir verwenden sie mit der if-Bedingung.

Angenommen, wir haben die Funktion Audio_get in der Datei views.py, und in dieser Funktion geben wir eine HTTP-Antwort zurück, wenn die Bedingung True oder False wird. Mal sehen, ob es funktioniert oder nicht.

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

Bevor wir den Server ausführen, müssen wir sicherstellen, dass wir die URL in der Datei urls.py hinzugefügt haben. Wenn wir auf die URL klicken, wird die definierte Funktion aus der Datei views.py herausgezogen, und in unserem Fall haben wir die Funktion Audio_get definiert.

URLs Python-Code

Lassen Sie uns den Server ausführen, öffnen Sie Ihren Browser und gehen Sie mit dem Localhost durch, auf dem Ihr Django-Server ausgeführt wird.

Browser öffnen

Wir können sehen, dass kein Fehler aufgetreten ist, und wir haben eine HTTP-Antwort erhalten.

Um ein fehlendes Objekt aus einer dynamischen URL zu behandeln, können wir die Klasse get_object_or_404 verwenden. Wenn wir versuchen, ein Objekt zu verwenden, das nicht existiert, sehen wir eine Ausnahme, die nicht benutzerfreundlich ist.

Wir können den Benutzerfehler (Seite nicht gefunden) anstelle der eingebauten Django-Ausnahme anzeigen; es wird ein gültiger Fehler sein. Um diesen Fehler zu verwenden, haben wir einen Beispielcode verwendet, um einen Fehler auszulösen, wenn der Django-Server das Objekt nicht finden kann.

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)

Es wird einen 404-Seite-Fehler auslösen.

Fehler Seite nicht gefunden

Eine weitere Möglichkeit, dies zu tun, besteht darin, es in einen try-Block zu stecken. Wir müssen die Klasse Http404 importieren, die diese 404-Seite wie diese get_object_or_404-Klasse auslöst.

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)

Es wird auch eine 404-Seite mit Http404 erstellt, wenn das Produkt- oder Modellobjekt nicht vorhanden ist.

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

Verwandter Artikel - Django Object