Quelle est la bonne façon de valider si un objet existe dans une vue django sans renvoyer 404?

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

  •  11-07-2019
  •  | 
  •  

Question

Je dois vérifier si un objet existe et le renvoyer, en fonction de cela, effectuer des actions. Quelle est la bonne façon de le faire sans retourner un 404?

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

if listing:
Était-ce utile?

La solution

Je n’utiliserais pas l’encapsuleur 404 si vous n’avez pas reçu de code 404. C’est un abus d’intention. Attrapez simplement le DoesNotExist à la place.

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

Autres conseils

Vous pouvez également faire:

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

Parfois, il est plus clair d'utiliser try: sauf: bloc et parfois, one-liner existe () rend le code plus clair ... tout dépend de votre application logique.

listing = RealEstateListing.objects.filter(slug_url=slug).first() 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top