Menu
CoddyTech

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.

challenge icon

Thử thách

Dễ

Thêm chức năng tìm kiếm vào trang chủ.

  1. Trong event_list.html, thêm một biểu mẫu phía trên <ul class="events">, với method="get", chứa một ô nhập có tên q và nút Search.
  2. Trong event_list, giữ lại các sự kiện có tiêu đề chứa q, không phân biệt chữ hoa chữ thường.
  3. Truyền q vào mẫu để làm value cho ô nhập, để từ khóa Meetup vẫ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