iT邦幫忙

0

Day 18|增加分類篩選

  • 分享至 

  • xImage
  •  

Day 17 可以搜尋名稱,今天則讓使用者依照分類找作品,例如科幻電影或動作遊戲。
步驟 1:修改電影與遊戲路由
在兩個路由中新增:
genre = request.args.get("genre", "").strip()

然後在 SQL 的 ORDER BY 之前加入:
if genre: query += " AND genre = ?" params.append(genre)

傳入模板時也加入:
selected_genre=genre

這裡使用完全比對,代表只有分類欄位等於所選值的作品才會出現。
步驟 2:在 collection.html 加入分類選單
在原本的搜尋表單中加入:
作品分類

全部分類

{% for genre_name in genres %}
    <option value="{{ genre_name }}"
        {% if selected_genre == genre_name %}selected{% endif %}>
        {{ genre_name }}
    </option>
{% endfor %}

步驟 3:由資料庫取得分類清單
在電影與遊戲路由執行完 items 查詢後、關閉連線前,加入:
genres = connection.execute(""" SELECT DISTINCT genre FROM media WHERE media_type = ? AND genre IS NOT NULL AND TRIM(genre) != '' ORDER BY genre""", (media_type,)).fetchall()

因為電影與遊戲路由各自有不同的類型,可以分別傳入:
media_type="movie"

或:
media_type="game"

然後在 render_template() 中傳入:
genres=[row["genre"] for row in genres]

步驟 4:測試
新增幾部不同分類的作品,例如:

  • 科幻電影
  • 動作電影
  • 動作遊戲
  • 角色扮演遊戲
    再用分類選單確認列表是否正確篩選。

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

尚未有邦友留言

立即登入留言