我需要验证对象是否存在并返回该对象,然后根据该行为执行操作。什么是不返回404的正确方法?
try: listing = RealEstateListing.objects.get(slug_url = slug) except: listing = None if listing:
如果你没有得到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:块更清晰,而有时使用单行exists()代码可使代码看起来更清晰……全部取决于你的应用程序逻辑。
try: except:
exists()