Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre utilidade do name na url

Para fazer o caminho ao clicar em uma imagem, o porfessor utilizou isso na tag a do html: <a href="{% url 'imagem' %}"> onde ele define o name imagem na função imagem, que leva para a página, antes disso, eu testei manter na tag a do html como estava antes que era: <a href="imagem.html"> e mudar minha path imagem na url, definindo-a assim: path('imagem.html', imagem), e foi já que agora a rota da minha path estava sendo a mesma da minha tag a. Gostaria de entender se isso é menos certo do que fazer como o professor fez que é definindo o name em cada path e passando ele em cada tag a, ou se as duas maneiras são comums e utilizadas

1 resposta
solução!

Oi Leonardo, tudo bem?

A prática mais comum e recomendada é a que o professor demonstrou, usando o atributo name na definição da URL no Django e referenciando esse nome no template HTML. Isso é conhecido como URL Namespacing.

O motivo para isso é que, ao definir um nome para a URL, você pode alterar a URL em si (o padrão que o Django busca) sem precisar alterar todas as referências a essa URL nos seus templates. Por exemplo, se você decidir mudar a URL de 'imagem.html' para 'foto.html', você só precisaria atualizar a URL no seu arquivo urls.py e todas as referências a essa URL nos seus templates continuariam funcionando, porque eles referenciam o nome, e não a URL em si.

Imagine que você tenha uma URL definida assim:

path('imagem.html', imagem, name='imagem')

E em seu template você faz referência a ela assim:

<a href="{% url 'imagem' %}">

Se você decidir mudar a URL de 'imagem.html' para 'foto.html', você só precisa atualizar a URL no seu arquivo urls.py:

path('foto.html', imagem, name='imagem')

E o seu template continuará funcionando sem nenhuma alteração, pois ele faz referência ao nome da URL, e não a URL em si.

Mas, se você estivesse referenciando a URL diretamente no seu template, como no seu exemplo:

<a href="imagem.html">

Você teria que ir em cada template que faz referência a essa URL e atualizá-la manualmente. Isso pode se tornar muito trabalhoso e propenso a erros se o seu projeto for grande e tiver muitas URLs e templates.

Então realmente, a prática recomendada é usar o atributo name na definição da URL e referenciar esse nome no template, pra tornar o seu código mais fácil de manter e menos propenso a erros. Um abraço e bons estudos.