Parâmetros de String de Consulta no Django
No desenvolvimento web com Django, é essencial compreender a diferença entre os parâmetros transmitidos pela URL e aqueles enviados por meio de uma string de consulta. Por exemplo:
Por exemplo, no endereço:
http://127.0.0.1:8000/index/3/Tom/os segmentos finais, 3/Tom/, são interpretados como parâmetros da URL (ou parâmetros de rota). Já no endereço:
http://127.0.0.1:8000/index?id=3&name=Tomos valores 3 e Tom são transmitidos como parâmetros de string de consulta (ou query string).
A string de consulta inicia após o caractere de interrogação (?). Cada parâmetro é formado por um par chave-valor. Por exemplo, em id=3, id é a chave, enquanto 3 é o valor. Parâmetros múltiplos são separados pelo caractere & (ampersand).
Para acessar os valores de parâmetros de string de consulta em Django, o método request.GET.get() é utilizado. Esse método aceita como argumento o nome do parâmetro cujo valor se deseja obter.
Exemplo Prático
No arquivo views.py, o seguinte código define duas funções:
from django.http import HttpResponse
def index(request):
return HttpResponse("<h2>Página Principal</h2>")
def user(request):
age = request.GET.get("age")
name = request.GET.get("name")
return HttpResponse(f"<h2>Nome: {name} Idade: {age}</h2>")A função user extrai os valores dos parâmetros age e name presentes na string de consulta.
No arquivo urls.py, a configuração de rotas pode ser feita da seguinte forma:
from django.urls import path
from hello import views
urlpatterns = [
path("", views.index),
path("user/", views.user)
]Ao acessar o endereço:
http://127.0.0.1:8000/user/?name=Tom&age=22os parâmetros name e age serão preenchidos com os valores "Tom" e 22, respectivamente. Esses valores serão exibidos na resposta da aplicação.

Definindo Valores Padrão
Quando um parâmetro esperado não é fornecido, é possível atribuir um valor padrão. Isso é feito passando um segundo argumento para o método request.GET.get().
Por exemplo, a função user pode ser ajustada para fornecer valores padrão:
from django.http import HttpResponse
def index(request):
return HttpResponse("<h2>Página Principal</h2>")
def user(request):
age = request.GET.get("age", 0)
name = request.GET.get("name", "Indefinido")
return HttpResponse(f"<h2>Nome: {name} Idade: {age}</h2>")Nesse código, se o parâmetro name não for fornecido, ele será definido como "Indefinido". Da mesma forma, se o parâmetro age estiver ausente, ele será preenchido com o valor 0.
Assim, ao acessar:
http://127.0.0.1:8000/user/a aplicação exibirá:
Nome: Indefinido Idade: 0

Documentação oficial: