Menu
CoddyTech

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.

challenge icon

Sfida

Facile

Aggiungi 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 chiamato q e un pulsante Search.
  • In event_list, mostra solo gli eventi il cui titolo contiene q, 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