Ein Suchformular
Teil des Abschnitts Formulare der Django-Journey von Coddy. Lektion 1 von 20.
Besucher können das Veranstaltungsboard noch nicht durchsuchen. Ein Formular besteht aus Feldern und einer Schaltfläche, die das, was eingegeben wurde, an eine URL sendet.
Ein Formular, das nur Daten liest, verwendet method="get": Der Browser fügt jedes Feld als name=value in die Abfragezeichenfolge der URL ein. Ein Größenfilter auf der Seite eines Shops:
<form method="get">
<select name="size">
<option value="S">Small</option>
<option value="L">Large</option>
</select>
<button type="submit">Show</button>
</form>Bei Auswahl von Large wird /products/?size=L geöffnet. Das name des Feldes ist der Schlüssel, daher liest die View es wie jede Abfragezeichenfolge aus: request.GET.get("size", ""), mit einem Standardwert für die unveränderte Seite.
Nach einer Suche wird die Seite neu geladen, und das Feld ist wieder leer. Damit die eingegebenen Wörter darin erhalten bleiben, gib sie an das Template zurück und schreibe sie in das value des Eingabefelds.
Aufgabe
EinfachFüge der Startseite eine Suche hinzu:
- Oberhalb der Liste in
event_list.htmlein Formular, das sein Feld in der URL übermittelt: ein Eingabefeld namensqund eine SchaltflächeSearch. - Zeige in
event_listnur die Veranstaltungen an, deren Titelqenthält, unabhängig von Groß- und Kleinschreibung. - Das Feld behält den eingegebenen Suchbegriff bei.
Klicke auf „Run“ und suche nach jazz.
Probier es selbst
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})
Alle Lektionen in Formulare
Übe selbstständig: Django-Playground