Menu
CoddyTech

Formularz wyszukiwania

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

Odwiedzający nie mogą jeszcze przeszukiwać tablicy wydarzeń. 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 jako 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 rozmiaru 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 umieść w atrybucie value pola.

challenge icon

Wyzwanie

Łatwy

Dodaj wyszukiwanie na stronie głównej.

  1. W pliku event_list.html, nad <ul class="events">, dodaj formularz z method="get" zawierający pole wejściowe o nazwie q i przycisk Search.
  2. W event_list pozostaw wydarzenia, których tytuł zawiera q, bez rozróżniania wielkości liter.
  3. Przekaż q do szablonu jako value pola wejściowego, aby wyszukiwanie Meetup pozostało w polu.

Wyszukaj jazz: pozostanie tylko Friday Jazz Night, a w polu nadal będzie widoczne 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