Ein Suchformular
Teil des Abschnitts Formulare der Django-Journey von Coddy. Lektion 1 von 20.
Besucher können das Veranstaltungsbrett noch nicht durchsuchen. Ein Formular ist eine Sammlung von 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>Wenn du „Large“ auswählst, wird /products/?size=L geöffnet. Das name-Attribut des Feldes ist der Schlüssel, deshalb liest die Ansicht es wie jede Abfragezeichenfolge aus: request.GET.get("size", ""), mit einem Standardwert für die normale Seite.
Nach einer Suche wird die Seite neu geladen, und das Eingabefeld ist wieder leer. Damit die Wörter darin erhalten bleiben, gib sie an das Template zurück und schreibe sie in das value-Attribut des Eingabefeldes.
Aufgabe
EinfachFüge der Startseite eine Suche hinzu.
- Füge in
event_list.htmloberhalb von<ul class="events">ein Formular mitmethod="get"ein, das ein Eingabefeld namensqund eine SchaltflächeSearchenthält. - Behalte in
event_listdie Veranstaltungen, deren Titelqenthält, wobei Groß- und Kleinschreibung ignoriert wird. - Übergib
qan das Template für denvaluedes Eingabefelds, damit eine Suche nachMeetupim Feld stehen bleibt.
Suche nach Jazz: Nur Friday Jazz Night bleibt übrig, und im Feld steht weiterhin 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