Форма поиска
Часть раздела Формы путешествия по 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разместите форму, которая передаёт своё поле в URL: поле ввода с именемqи кнопкуSearch. - В
event_listпоказывайте только те мероприятия, в названии которых содержитсяq, без учёта регистра. - В поле поиска остаётся введённый запрос.
Нажмите «Run» и выполните поиск по запросу jazz.
Попробуйте сами
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