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 quadro 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>

Escolher Large abre /products/?size=L. O name do campo é a chave, então a view o lê como qualquer string de consulta: request.GET.get("size", ""), com um valor padrão para a página sem filtro.

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.

  1. Em event_list.html, acima de <ul class="events">, adicione um formulário com method="get" contendo um campo de entrada chamado q e um botão Search.
  2. Em event_list, mantenha os eventos cujo título contém q, sem diferenciar maiúsculas de minúsculas.
  3. Passe q para o template como value do campo de entrada, para que uma busca por Meetup permaneça na caixa.

Busque por jazz: só Friday Jazz Night permanece, e a caixa ainda mostra 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