Por Luferat em 02/11/2026
O Django tem diversos recursos para facilitar a construção do front-end, torná-lo mais seguro e estável. Vimos anteriormente, por exemplo, o uso dos "filters"...
Mas também temos um excelente "Gestor de URLs" que vamos integrar aos templates.
Atualmente nossas URLs estão assim no HTML:
<a href="/contacts">...</a>
O problema é que, se a URL mudar no urls.py, teremos que atualizar todos os templates manualmente.
A solução é usar a tempalte tag {% url %} com o name da URL que já definimos no urls.py:
Abra blog/templates/_base.html e faça as substituições usando o VSCode (Ctrl+H);
Localizar Substituir por Observação
#index {% url 'home' %} O template ainda usa #index nos links da página inicial.
/contacts {% url 'contacts' %} Já alteramos de #contacts para /contacts no documento anterior.
Observe que, trocamos as "rotas reais" por {% url 'name_da_rota' %}, onde name_da_rota está definido em cada "rota" listada no blog/urls.py, no atributo name:
from django.urls import path
from . import views
urlpatterns = [ # ┌───── Nesta rota, 'name' deve ser sempre 'home'
path('', views.home, name='home'), # ┌───── Nesta rota, 'name' deve ser sempre 'contacts'
path('contacts/', views.contacts, name='contacts'),
]
Assim, mesmo que a rota seja alterada, o name dela deve continuar o mesmo, fazendo com que os links dos templates "não quebrem"! Vamos manter esse padrão em todos os templates, à medida que novas páginas e rotas surgem.
Observe que, quando criamos uma rota, adicionamos o argumento name nela. Veja a conexão completa:
# urls.py — você DEFINE o 'name' da rota. Ex.
path('pageroute/', views.pageview, name='routename'),
{# template — você USA o 'name' em uma 'url' #}
<a href="{% url 'routename' %}">Ver postagem</a>
# views.py — você também USA o 'name' para acessar rotas dentro da 'view'
return redirect('routename')
O name é o apelido da URL, e esse apelido pode ser usado em templates, views e qualquer lugar do projeto!
Resumindo os três lugares onde o name aparece:
Onde Como usa Observação
urls.py name='routename' Define o apelido
Template {% url 'routename' %} Gera o link no template
View redirect('routename', id=id) Redireciona na view
Outro uso comum, quando precisamos passar "argumentos" para a rota que estamos acessando:
Onde Como usa Observação
urls.py name='routename' Define o apelido
Template {% url 'routename' id=pessoa.id %} Gera o link passando um argumento
View redirect('routename', id=id) Redireciona passando um argumento
URLs são assuntos importantes quando tratamos de aplicações Web. Use os links abaixo para aprender mais e entender como {% url %} funciona para diversos casos: