一尘不染

验证对象是否存在于Django视图中而不返回404的正确方法是什么?

django

我需要验证对象是否存在并返回该对象,然后根据该行为执行操作。什么是不返回404的正确方法?

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

if listing:

阅读 319

收藏
2020-03-31

共2个答案

一尘不染

如果你没有得到404,我就不会使用404包装器。这是对意图的滥用。只需捕获DoesNotExist,即可。

try:
    listing = RealEstateListing.objects.get(slug_url=slug)
except RealEstateListing.DoesNotExist:
    listing = None
2020-03-31
一尘不染

你也可以这样做:

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

有时使用try: except:块更清晰,而有时使用单行exists()代码可使代码看起来更清晰……全部取决于你的应用程序逻辑。

2020-03-31