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.
Wyzwanie
ŁatwyDodaj wyszukiwanie na stronie głównej.
- W pliku
event_list.html, nad<ul class="events">, dodaj formularz zmethod="get"zawierający pole wejściowe o nazwieqi przyciskSearch. - W
event_listpozostaw wydarzenia, których tytuł zawieraq, bez rozróżniania wielkości liter. - Przekaż
qdo szablonu jakovaluepola wejściowego, aby wyszukiwanieMeetuppozostał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
1Formularze HTML
Formularz wyszukiwaniaFormularz POSTPrzekierowanie po POSTPoćwicz samodzielnie: Edytor online Django