我需要验证对象是否存在并返回该对象,然后根据该对象执行操作。不返回 404 的正确方法是什么?
try:
listing = RealEstateListing.objects.get(slug_url = slug)
except:
listing = None
if listing:
我需要验证对象是否存在并返回该对象,然后根据该对象执行操作。不返回 404 的正确方法是什么?
try:
listing = RealEstateListing.objects.get(slug_url = slug)
except:
listing = None
if listing:
你也可以这样做:
if not RealEstateListing.objects.filter(slug_url=slug).exists():
# do stuff...
有时使用块更清晰,try: except:
有时单行使exists()
代码看起来更清晰......这一切都取决于您的应用程序逻辑。
如果您没有获得 404,我不会使用 404 包装器。这是对意图的滥用。相反,只需抓住DoesNotExist。
try:
listing = RealEstateListing.objects.get(slug_url=slug)
except RealEstateListing.DoesNotExist:
listing = None
listing = RealEstateListing.objects.filter(slug_url=slug).first()
我会这样做很简单,如下所示:
listing = RealEstateListing.objects.filter(slug_url=slug)
if listing:
# do stuff
我认为不需要尝试/捕获。如果结果中可能有多个对象,则使用 first() 如用户 Henrik Heino 所示