Форма поиска
Часть раздела Формы путешествия по Django на Coddy. Урок 1 из 20.
Посетители пока не могут искать события на доске. Форма — это набор полей и кнопка, которая отправляет введённые данные по URL.
Форма, которая только считывает данные, использует method="get": браузер помещает каждое поле в строку запроса URL в виде name=value. Фильтр размера на странице магазина:
<form method="get">
<select name="size">
<option value="S">Small</option>
<option value="L">Large</option>
</select>
<button type="submit">Show</button>
</form>При выборе Large открывается /products/?size=L. Атрибут name поля — это ключ, поэтому представление считывает его так же, как любую строку запроса: request.GET.get("size", ""), со значением по умолчанию для обычной страницы.
После поиска страница перезагружается, и поле снова становится пустым. Чтобы сохранить в нём введённые слова, передайте их обратно в шаблон и укажите в атрибуте value поля ввода.
Задание
ЛегкоДобавь поиск на главную страницу.
- В
event_list.html, перед<ul class="events">, добавь форму сmethod="get", содержащую поле ввода с именемqи кнопкуSearch. - В
event_listоставь события, в названии которых естьq, не учитывая регистр. - Передай
qв шаблон для атрибутаvalueполя ввода, чтобы поисковый запросMeetupоставался в поле.
Выполни поиск по слову «джаз»: останется только Friday Jazz Night, а в поле по-прежнему будет указано «джаз».
Попробуйте сами
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})
Все уроки раздела Формы
Потренируйтесь самостоятельно: Песочница Django