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.
Desafio
FácilAdicione 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 chamadoqe um botãoSearch. - Em
event_list, mostre apenas os eventos cujo título contémq, 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
1Formulários HTML
Um formulário de buscaUm formulário POSTRedirecionamento após POSTPratique por conta própria: Playground de Django