Quelle est la bonne façon de valider si un objet existe dans une vue django sans renvoyer 404?
-
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:
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