新手指南:Django 標籤顯示功能解析

更新日期: 2025 年 1 月 27 日

在 Django 專案開發中,標籤 (tags) 是一個非常常見且實用的功能,用於對內容進行分類或標記,方便用戶進行瀏覽與篩選。

本文將以具體範例代碼為基礎,詳細講解如何在 Django 中處理標籤,並在頁面中展示它們。

無論是新手還是剛接觸 Django 的開發者,都可以透過這篇文章了解如何實現這項功能。

從資料庫中查詢標籤

在 Django 的視圖函式中,使用以下代碼可以獲取服務項目 (Service) 的標籤資訊,並將其傳遞到模板進行渲染:

from django.shortcuts import render, get_object_or_404

def service_detail(request, service_id):
    service = get_object_or_404(Service, id=service_id)
    tags = service.tags.all()

    return render(
        request,
        "services/service_detail.html",
        {
            "service": service,
            "tags": tags,  # 將標籤數據傳遞給模板
        },
    )

代碼解析:

  1. get_object_or_404
    • 使用服務 ID 獲取指定的 Service 物件。
    • 如果該物件不存在,則會自動返回一個 404 頁面。
  2. tags = service.tags.all()
    • 假設 Service 模型中定義了一個與 Tag 模型的多對多關聯字段,這行代碼會抓取所有與該服務項目相關的標籤。
  3. return render()
    • 使用 render() 將資料傳遞到模板,並返回 HTTP 響應。
    • tags 被包含在模板上下文中,鍵名為 "tags",模板可以透過該鍵名訪問標籤數據。

在前端渲染標籤

後端獲取的標籤資料會被傳遞到模板中,以下是模板中的代碼:

<div class="flex flex-wrap gap-2 mt-4">
  {% for tag in tags %}
        <span class="px-3 py-1 bg-blue-100 text-blue-700 rounded-full text-s flex items-center">
            {{ tag.name }}
        </span>
  {% endfor %}
</div>

代碼解析:

  1. {% for tag in tags %} 使用 Django 模板語法迭代 tags 列表,逐一處理每個標籤。
  2. <span> 標籤:
    • 每個標籤會被包裝在一個 <span> 元素內。
    • 標籤的樣式由一些 CSS 類名控制,例如:
      • px-3 py-1:定義內邊距,確保標籤內容的間距適中。
      • bg-blue-100 text-blue-700:設置背景色和文字顏色,提供視覺區分。
      • rounded-full:將標籤的邊角設置為圓形。
      • flex items-center:確保標籤的內容居中對齊。
  3. {{ tag.name }} 動態顯示標籤名稱,這是從後端傳遞的 tag 物件的 name 屬性。

輸出效果: 每個標籤都會以小型圓角框的形式顯示,背景為淡藍色,文字為深藍色,整體美觀且易讀。

結語

以上內容詳細講解了如何在 Django 專案中處理標籤功能,從後端數據的查詢到前端的渲染展示,並附上了代碼解析與實現細節。

透過這篇指南,新手開發者應能輕鬆上手並根據需求進一步擴展標籤功能。如果你有任何問題或需要更多幫助,請隨時提出!

Similar Posts