Biểu mẫu tìm kiếm
Thuộc phần Biểu mẫu trong hành trình Django của Coddy. Bài học 1 trên 20.
Khách truy cập chưa thể tìm kiếm trên bảng sự kiện. Biểu mẫu là một tập hợp các trường và một nút gửi nội dung đã nhập đến URL.
Biểu mẫu chỉ đọc dữ liệu dùng method="get": trình duyệt đặt từng trường vào chuỗi truy vấn của URL dưới dạng name=value. Bộ lọc kích cỡ trên trang của một cửa hàng:
<form method="get">
<select name="size">
<option value="S">Small</option>
<option value="L">Large</option>
</select>
<button type="submit">Show</button>
</form>Chọn Large sẽ mở /products/?size=L. name của trường là khóa, vì vậy view đọc giá trị này như mọi chuỗi truy vấn khác: request.GET.get("size", ""), với giá trị mặc định cho trang thông thường.
Sau khi tìm kiếm, trang tải lại và ô nhập trống trở lại. Để giữ lại nội dung đã nhập, hãy truyền chúng lại cho template và ghi chúng vào value của ô nhập.
Thử thách
DễThêm chức năng tìm kiếm vào trang chủ.
- Trong
event_list.html, thêm một biểu mẫu phía trên<ul class="events">, vớimethod="get", chứa một ô nhập có tênqvà nútSearch. - Trong
event_list, giữ lại các sự kiện có tiêu đề chứaq, không phân biệt chữ hoa chữ thường. - Truyền
qvào mẫu để làmvaluecho ô nhập, để từ khóaMeetupvẫn hiển thị trong ô.
Tìm kiếm jazz: chỉ còn Friday Jazz Night, và trong ô vẫn hiển thị jazz.
Tự làm thử
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})
Tất cả bài học trong Biểu mẫu
Tự luyện tập: Playground Django