404を返さずにdjangoビューにオブジェクトが存在するかどうかを検証する正しい方法は何ですか?

StackOverflow https://stackoverflow.com/questions/639836

  •  11-07-2019
  •  | 
  •  

質問

オブジェクトが存在するかどうかを確認し、オブジェクトを返す必要があります。その後、それに基づいてアクションを実行します。 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:を使用する方がより明確な場合があります:例外:ブロックなど、ワンライナーの exists()によりコードがより明確になります...すべてはアプリケーションに依存します論理。

listing = RealEstateListing.objects.filter(slug_url=slug).first() 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top