как правильно проверить, существует ли объект в представлении django без возврата 404?


в основном просто проверить, если объект существует и вернуть объект. затем на основании этого выполняют действия. Мне интересно, Как правильно это сделать, не возвращая 404?

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

if listing:
3 67

3 ответа:

Я бы не использовал обертку 404, если вам не дают 404. Это злоупотребление умыслом. Просто поймайте DoesNotExist, вместо этого.

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

вы также можете сделать

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

иногда более ясно использовать try: except: block, А в других случаях one-liner exists() делает код более ясным... все зависит от логики вашего приложения.

listing = RealEstateListing.objects.filter(slug_url=slug).first()