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.