Atualizado: 14/06/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Parametros de Views no Django

No Django, as funções de visualização(views) podem receber parâmetros adicionais além do objeto HttpRequest. Esses parâmetros são definidos na URL da rota e são capturados pelo Django para repassá-los à função de visualização.

Por exemplo, na URL:

http://127.0.0.1:8000/index/Tom/38/

Os segmentos Tom e 38 representam parâmetros que podem ser passados para uma função de view correspondente.

Definição de Parâmetros com a Função path

No arquivo views.py, podem ser definidas funções que aceitam parâmetros. Por exemplo:

from django.http import HttpResponse

def index(request):
    return HttpResponse("<h2>Página Principal</h2>")

def user(request, name):
    return HttpResponse(f"<h2>Nome: {name}</h2>")

Na função user, o parâmetro name recebe o valor correspondente da URL. Ele pode ser manipulado internamente na função como qualquer outro argumento.

No arquivo urls.py, o seguinte código pode ser usado para configurar as rotas:

from django.urls import path
from hello import views

urlpatterns = [
    path("", views.index),
    path("user/<str:name>", views.user),
]

O parâmetro name na rota é especificado entre os delimitadores < >, no formato <tipo:nome>. Aqui, o tipo str indica que o valor será tratado como uma string. Outros especificadores disponíveis no Django incluem:

  • str: qualquer string, exceto /. É o valor padrão.
  • int: números inteiros positivos.
  • slug: combina caracteres alfanuméricos ASCII, hífens e underscores.
  • uuid: corresponde a um UUID, como 075194d3-6885-417e-a8a8-6c931e272f00.
  • path: aceita strings que podem incluir o caractere /.

Os nomes e quantidades dos parâmetros na rota devem corresponder aos argumentos da função que processará a solicitação.

A função user pode ser acessada pela URL http://127.0.0.1:8000/user/Tom. Nesse caso, o valor Tom será atribuído ao parâmetro name.

Navegador exibindo parâmetros recebidos pela view

Definição de Múltiplos Parâmetros

Se for necessário incluir um segundo parâmetro, como age, no arquivo views.py, a função pode ser alterada para:

def user(request, name, age):
    return HttpResponse(f"<h2>Nome: {name}  Idade: {age}</h2>")

No arquivo urls.py, a rota deve incluir os dois parâmetros:

from django.urls import path
from hello import views

urlpatterns = [
    path("", views.index),
    path("user/<str:name>/<int:age>", views.user),
]

Neste exemplo, o valor de age será tratado como um inteiro devido ao especificador int. A função user pode ser acessada pela URL http://127.0.0.1:8000/user/Tom/38, onde Tom e 38 serão atribuídos, respectivamente, aos parâmetros name e age.

Dessa forma, URLs como http://127.0.0.1:8000/user ou http://127.0.0.1:8000/user/Tom serão tratadas corretamente.

Navegador exibindo dois parâmetros recebidos pela view

Valores Padrão para Parâmetros

Quando valores para os parâmetros não são fornecidos na URL, ocorre um erro 404, pois a solicitação não corresponde a nenhuma rota definida. Para evitar isso, valores padrão podem ser atribuídos aos parâmetros na função de view:

def user(request, name="Indefinido", age=0):
    return HttpResponse(f"<h2>Nome: {name}  Idade: {age}</h2>")

Neste caso, se o valor de name não for fornecido, ele será definido como "Indefinido", e age será definido como 0.

No arquivo urls.py, é necessário definir rotas adicionais para tratar URLs com diferentes combinações de parâmetros:

from django.urls import path
from hello import views

urlpatterns = [
    path("", views.index),
    path("user", views.user),
    path("user/<str:name>", views.user),
    path("user/<str:name>/<int:age>", views.user),
]

Navegador exibindo valores padrão para parâmetros definidos na view

Definição de Parâmetros com a Função re_path

O Django também permite a utilização de expressões regulares para definir rotas e parâmetros, utilizando a função re_path. No arquivo views.py, a função de view permanece a mesma:

def user(request, name, age):
    return HttpResponse(f"<h2>Nome: {name}  Idade: {age}</h2>")

No arquivo urls.py, a configuração da rota pode ser feita com re_path:

from django.urls import path, re_path
from hello import views

urlpatterns = [
    path("", views.index),
    re_path(r"^user/(?P<name>\D+)/(?P<age>\d+)", views.user),
]

No padrão (?P<nome_do_parametro>expressão_regular), o nome do parâmetro é especificado entre < >, seguido por uma expressão regular. No exemplo acima, name aceita apenas caracteres alfabéticos (\D+), enquanto age aceita apenas dígitos (\d+).

Rotas com valores padrão para parâmetros também podem ser definidas com re_path. A função no arquivo views.py pode ser ajustada para:

def user(request, name="Indefinido", age=0):
    return HttpResponse(f"<h2>Nome: {name}  Idade: {age}</h2>")

No arquivo urls.py, rotas adicionais precisam ser configuradas para lidar com combinações de parâmetros ausentes:

urlpatterns = [
    path("", views.index),
    re_path(r"^user/(?P<name>\D+)/(?P<age>\d+)", views.user),
    re_path(r"^user/(?P<name>\D+)", views.user),
    re_path(r"^user", views.user),
]

É importante garantir que as rotas mais específicas sejam declaradas antes das mais genéricas. Isso evita conflitos no roteamento e assegura que os valores sejam processados corretamente de acordo com o formato da URL.

Documentação oficial:

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com