개체가 있는지 확인하고 개체를 반환 한 다음 해당 작업을 수행합니다. 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()
코드를 더 명확하게 보이게하는 경우도 있습니다. 모두 애플리케이션 논리에 따라 다릅니다.
답변
listing = RealEstateListing.objects.filter(slug_url=slug).first()
답변
다음과 같이 간단하게 할 것입니다.
listing = RealEstateListing.objects.filter(slug_url=slug)
if listing:
# do stuff
try / catch가 필요하지 않습니다. 결과에 잠재적으로 여러 객체가있는 경우 사용자 Henrik Heino가 표시 한 것처럼 first ()를 사용하십시오.