Menu
CoddyTech

Formularz wyszukiwania

Część sekcji Formularze ścieżki Django w Coddy. Lekcja 1 z 20.

Odwiedzający nie mogą jeszcze wyszukiwać wydarzeń na tablicy. Formularz to zestaw pól i przycisk, który wysyła wpisane dane pod adres URL.

Formularz, który tylko odczytuje dane, używa method="get": przeglądarka umieszcza każde pole w ciągu zapytania adresu URL, w postaci name=value. Filtr rozmiaru na stronie sklepu:

<form method="get">
    <select name="size">
        <option value="S">Small</option>
        <option value="L">Large</option>
    </select>
    <button type="submit">Show</button>
</form>

Wybranie opcji Large otwiera /products/?size=L. Atrybut name pola jest kluczem, więc widok odczytuje go tak jak każdy ciąg zapytania: request.GET.get("size", ""), z wartością domyślną dla zwykłej strony.

Po wyszukiwaniu strona ładuje się ponownie, a pole jest znów puste. Aby zachować wpisane w nim słowa, przekaż je z powrotem do szablonu i wpisz je do atrybutu value pola.

challenge icon

Wyzwanie

Łatwy

Dodaj wyszukiwanie na stronie głównej:

  • Nad listą w pliku event_list.html umieść formularz, który wysyła wartość pola w adresie URL: pole wejściowe o nazwie q i przycisk Search.
  • W event_list wyświetlaj tylko te wydarzenia, których tytuł zawiera q, bez rozróżniania wielkości liter.
  • Pole zachowuje wpisaną wartość.

Naciśnij Run i wyszukaj jazz.

Spróbuj swoich sił

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})

Wszystkie lekcje w sekcji Formularze

Poćwicz samodzielnie: Edytor online Django