Un modulo di ricerca
Fa parte della sezione Form del percorso Django di Coddy. Lezione 1 di 20.
I visitatori non possono ancora cercare nella bacheca degli eventi. Un modulo è un insieme di campi e un pulsante che invia a un URL ciò che è stato digitato.
Un modulo che legge soltanto i dati usa method="get": il browser inserisce ogni campo nella stringa di query dell'URL, come name=value. Un filtro per la taglia nella pagina di un negozio:
<form method="get">
<select name="size">
<option value="S">Small</option>
<option value="L">Large</option>
</select>
<button type="submit">Show</button>
</form>Scegliendo Large si apre /products/?size=L. Il name del campo è la chiave, quindi la vista lo legge come qualsiasi stringa di query: request.GET.get("size", ""), con un valore predefinito per la pagina normale.
Dopo una ricerca, la pagina si ricarica e la casella è di nuovo vuota. Per mantenervi le parole, passale di nuovo al template e scrivile nell'attributo value dell'input.
Sfida
FacileAggiungi una ricerca alla pagina iniziale:
- Sopra l’elenco in
event_list.html, un modulo che invia il suo campo nell’URL: un campo di input chiamatoqe un pulsanteSearch. - In
event_list, mostra solo gli eventi il cui titolo contieneq, ignorando le maiuscole. - Il campo conserva ciò che è stato cercato.
Premi Run e cerca jazz.
Provalo tu
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})
Tutte le lezioni di Form
Esercitati da solo: Playground Django