Qual è il modo giusto per convalidare se esiste un oggetto in una vista django senza restituire 404?

StackOverflow https://stackoverflow.com/questions/639836

  •  11-07-2019
  •  | 
  •  

Domanda

Devo verificare se esiste un oggetto e restituire l'oggetto, quindi in base a quello eseguire azioni. Qual è il modo giusto per farlo senza restituire un 404?

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

if listing:
È stato utile?

Soluzione

Non userei il wrapper 404 se non ti venisse dato un 404. Questo è un uso improprio delle intenzioni. Prendi invece DoesNotExist, invece.

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

Altri suggerimenti

Puoi anche fare:

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

A volte è più chiaro usare try: tranne: block e altre volte esiste un one-liner () che rende il codice più chiaro ... tutto dipende dalla tua applicazione logica.

listing = RealEstateListing.objects.filter(slug_url=slug).first() 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top