97

オブジェクトが存在するかどうかを確認してオブジェクトを返し、それに基づいてアクションを実行する必要があります。404を返さずにそれを行う正しい方法は何ですか?

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

if listing:
4

4 に答える 4

216

次のこともできます。

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

ブロックを使用する方が明確な場合もあれば、try: except:ワンライナーexists()でコードがより明確になる場合もあります...すべてはアプリケーションロジックに依存します。

于 2011-12-16T19:10:18.393 に答える
126

404 が与えられていない場合は、404 ラッパーを使用しません。これは意図の誤用です。代わりに、DoesNotExist をキャッチしてください。

try:
    listing = RealEstateListing.objects.get(slug_url=slug)
except RealEstateListing.DoesNotExist:
    listing = None
于 2009-03-12T19:24:12.187 に答える