Guia Completo do Módulo de URLs no Django
Francisco Júnior
Posted on October 12, 2023
O módulo de URLs é uma parte essencial do framework Django. Ele permite mapear URLs para funções específicas, fornecendo uma maneira organizada de rotear solicitações do navegador para as visualizações corretas. Neste guia completo, exploraremos o módulo de URLs do Django, seus recursos e forneceremos exemplos práticos para ilustrar seu uso.
Estrutura de URLs em um Projeto Django
Em um projeto Django, a estrutura de URLs é geralmente organizada no arquivo urls.py
. Existem dois níveis principais de roteamento de URLs: URLs do projeto e URLs do aplicativo.
URLs do Projeto: Estas URLs estão localizadas no arquivo
urls.py
no diretório raiz do projeto e geralmente incluem URLs globais que afetam todo o projeto.URLs do Aplicativo: Cada aplicativo Django pode ter seu próprio arquivo
urls.py
, onde as URLs específicas do aplicativo são definidas. Essas URLs podem ser incluídas nas URLs do projeto.
Exemplo Básico de urls.py
Aqui está um exemplo básico de como criar um arquivo urls.py
em um aplicativo Django:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('sobre/', views.sobre, name='sobre'),
path('contato/', views.contato, name='contato'),
]
Neste exemplo, estamos importando o módulo path
do Django para definir as URLs e mapeando URLs para funções de visualização. Cada URL é definida usando o formato path('URL/', função, name='nome')
, onde URL
é o caminho da URL, função
é a função de visualização correspondente e nome
é um nome para a URL.
Passando Parâmetros nas URLs
É comum passar parâmetros nas URLs para criar URLs dinâmicas. Você pode definir parâmetros nas URLs usando colchetes angulares <tipo:nome>
. Aqui está um exemplo:
path('pessoa/<int:id>/', views.pessoa, name='pessoa')
Neste exemplo, estamos definindo um parâmetro <int:id>
na URL que espera um valor inteiro. A função de visualização pessoa
pode então acessar esse parâmetro como um argumento.
URL Aninhadas
Você pode organizar URLs aninhadas, o que é útil para agrupar URLs relacionadas. Para fazer isso, você pode usar a função include
. Aqui está um exemplo:
from django.urls import include, path
urlpatterns = [
path('blog/', include('blog.urls')),
]
Neste exemplo, as URLs do aplicativo de blog estão incluídas sob o caminho blog/
. As URLs no arquivo blog/urls.py
começarão com blog/
.
Nomes de URLs
Atribuir nomes a URLs é útil para referenciar URLs em templates ou em outros lugares do código. Aqui está um exemplo de nomeação de URLs:
path('sobre/', views.sobre, name='sobre')
Agora você pode se referir a esta URL em um template usando {% url 'sobre' %}
.
Redirecionamento de URLs
Você pode criar redirecionamentos usando a função redirect
do Django. Aqui está um exemplo:
from django.urls import path
from django.shortcuts import redirect
urlpatterns = [
path('redirecionar/', lambda request: redirect('sobre'), name='redirecionar'),
]
Neste exemplo, a URL redirecionar/
redireciona para a URL nomeada 'sobre'.
URLs com Expressões Regulares
Você também pode usar expressões regulares nas URLs para criar padrões de correspondência mais complexos. Isso é útil quando você precisa combinar várias URLs com um padrão específico. Aqui está um exemplo:
from django.urls import re_path
urlpatterns = [
re_path(r'^artigo/(?P<slug>[\w-]+)/$', views.artigo, name='artigo'),
]
Neste exemplo, usamos re_path
para definir uma URL que corresponde a um padrão específico de slug
.
Conclusão
O módulo de URLs do Django é uma parte fundamental do desenvolvimento de aplicativos web. Ele permite que você mapeie URLs para funções de visualização e crie uma estrutura de roteamento eficiente. Ao compreender e utilizar os recursos discutidos neste guia, você estará bem equipado para criar URLs dinâmicas e bem organizadas em seus projetos Django. Lembre-se de que a prática e a exploração adicional são essenciais para aprofundar sua compreensão do módulo de URLs do Django.
Posted on October 12, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.