web-dev-qa-db-de.com

Was ist der richtige Weg, um zu überprüfen, ob ein Objekt in einer Django Ansicht existiert, ohne 404 zurückzugeben?

Ich muss überprüfen, ob ein Objekt vorhanden ist, und das Objekt zurückgeben, und dann basierend darauf Aktionen ausführen. Was ist der richtige Weg, ohne einen 404 zurückzugeben?

try:
    listing = RealEstateListing.objects.get(slug_url = slug)
except:
    listing = None

if listing:
83
Rasiel

Ich würde den 404-Wrapper nicht verwenden, wenn Sie keinen 404 erhalten. Das ist ein Vorsatzmissbrauch. Fangen Sie stattdessen einfach den DoesNotExist.

try:
    listing = RealEstateListing.objects.get(slug_url=slug)
except RealEstateListing.DoesNotExist:
    listing = None
101
ironfroggy

Sie können auch tun:

if not RealEstateListing.objects.filter(slug_url=slug).exists():
    # do stuff...

Manchmal ist es klarer, den Block try: except: Zu verwenden, und manchmal wird der Code durch einzeiliges exists() klarer ... alles hängt von Ihrer Anwendungslogik ab.

176
zzart
listing = RealEstateListing.objects.filter(slug_url=slug).first() 
4
Henrik Heino