Menu
CoddyTech

Um formulário de busca

Parte da seção Forms do Journey de Django da Coddy. Lição 1 de 20.

Os visitantes ainda não podem pesquisar no mural de eventos. Um formulário é um conjunto de campos e um botão que envia para uma URL o que foi digitado.

Um formulário que apenas lê dados usa method="get": o navegador coloca cada campo na string de consulta da URL, como name=value. Um filtro de tamanho na página de uma loja:

<form method="get">
    <select name="size">
        <option value="S">Small</option>
        <option value="L">Large</option>
    </select>
    <button type="submit">Show</button>
</form>

Ao escolher Large, abre-se /products/?size=L. O name do campo é a chave, então a visualização o lê como qualquer string de consulta: request.GET.get("size", ""), com um valor padrão para a página simples.

Depois de uma pesquisa, a página é recarregada e a caixa fica vazia novamente. Para manter as palavras nela, passe-as de volta para o template e escreva-as no value do campo de entrada.

challenge icon

Desafio

Fácil

Adicione uma busca à página inicial:

  • Acima da lista em event_list.html, um formulário que envia o campo na URL: um campo de entrada chamado q e um botão Search.
  • Em event_list, mostre apenas os eventos cujo título contém q, sem diferenciar maiúsculas de minúsculas.
  • O campo mantém o que foi pesquisado.

Pressione Run e pesquise por jazz.

Experimente você mesmo

from django.shortcuts import get_object_or_404, render

from .models import Event


def event_list(request):
    events = Event.objects.all()
    return render(request, "events/event_list.html", {"events": events})


def event_detail(request, pk):
    event = get_object_or_404(Event, pk=pk)
    return render(request, "events/event_detail.html", {"event": event})

Todas as lições de Forms

Pratique por conta própria: Playground de Django