Ü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.
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.
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.
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.
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