O que é o caminho certo para validar se um objeto existe em uma exibição de Django sem retornar 404?

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

  •  11-07-2019
  •  | 
  •  

Pergunta

Eu preciso verificar se existe um objeto e retornar o objeto, em seguida, com base em que realizar ações. Qual é o caminho certo para fazê-lo sem retornar um 404?

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

if listing:
Foi útil?

Solução

Eu não usaria o invólucro 404 se você não for dada a 404. Isso é abuso de intenções. Apenas pegar o DoesNotExist, em vez disso.

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

Outras dicas

Você também pode fazer:

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

Às vezes é mais claro para bloco de uso try: except: e outras vezes de uma linha exists() torna o código mais claro olhando ... tudo depende da sua lógica de aplicação.

listing = RealEstateListing.objects.filter(slug_url=slug).first() 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top