Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Füge der Startseite eine Suche hinzu:

  • Oberhalb der Liste in event_list.html ein Formular, das sein Feld in der URL übermittelt: ein Eingabefeld namens q und eine Schaltfläche Search.
  • Zeige in event_list nur die Veranstaltungen an, deren Titel q enthä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