iT邦幫忙

0

Day 21|整合搜尋、篩選與排序

  • 分享至 

  • xImage
  •  

今天不是再加一個獨立功能,而是確認前面幾天的功能能同時使用。
步驟 1:統一查詢參數
電影與遊戲路由都應該讀取:
keyword = request.args.get("q", "").strip()status = request.args.get("status", "")genre = request.args.get("genre", "").strip()sort = request.args.get("sort", "newest")

查詢的建構順序為:

  1. 先依作品類型限制資料。
  2. 再依狀態篩選。
  3. 再依分類篩選。
  4. 再依名稱搜尋。
  5. 最後套用排序。
    步驟 2:確認 SQL 參數的順序
    例如:
    query = """ SELECT * FROM media WHERE media_type = ?"""params = [media_type]if status in allowed_statuses: query += " AND status = ?" params.append(status)if genre: query += " AND genre = ?" params.append(genre)if keyword: query += " AND title LIKE ?" params.append(f"%{keyword}%")

最後再加上 Day 19 的白名單排序條件,執行:
items = connection.execute(query, params).fetchall()

步驟 3:確認表單在同一次送出保留所有條件
搜尋框、狀態、分類、排序都應該放在同一個 GET 表單內。

這樣使用者選擇「科幻」、「已看」,並輸入「星際」時,不會因為切換排序而失去搜尋條件。
步驟 4:測試情境
請至少測試以下五種情境:

  • 只搜尋名稱。
  • 只選擇狀態。
  • 只選擇分類。
  • 同時搜尋名稱和選擇狀態。
  • 搜尋、分類、狀態與排序全部一起使用。

圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言