Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

新手指南:在 Django 中實作標籤功能

最後更新:2025年1月27日Python

本文為 Django 標籤功能 系列文,第 1 篇

  1. 新手指南:在 Django 中實作標籤功能 👈所在位置
  2. Django 新手指南:django-taggit 簡介
  3. 新手指南:使用 Alpine.js 實現前端標籤輸入功能
  4. 新手指南|Django 標籤功能|後端資料儲存邏輯
  5. 新手指南:Django 標籤顯示功能解析
  6. Djano 標籤編輯頁|前、後端設定說明
  7. 使用 Django 建立標籤分類頁:新手教學

標籤(Tags)是一個方便的功能,可以幫助使用者對內容進行分類與篩選,例如在部落格文章中標記「Django」、「Python」或「Web Development」。

本文將以實際範例,教你如何透過 django-taggit 套件在 Django 專案中實作標籤功能。

無論是初學者還是有經驗的開發者,都能依照這篇教學快速完成標籤系統。


安裝與設定環境

安裝 django-taggit

首先,使用以下指令安裝 django-taggit 套件:

pip install django-taggit

在 settings.py 中啟用套件

將 taggit 加入 INSTALLED_APPS:

# settings.py
INSTALLED_APPS = [
    ...,
    'taggit',
]

建立模型(Models)

在範例中,我們會建立一個名為 Article 的模型,並加入標籤功能:

# models.py
from django.db import models
from taggit.managers import TaggableManager

class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    tags = TaggableManager()  # 加入標籤功能

    def __str__(self):
        return self.title

更新資料庫

執行以下指令以建立資料庫遷移檔並套用變更:

python manage.py makemigrations
python manage.py migrate

在管理後台顯示標籤模型

讓我們設定 Django 管理後台,方便對 Article 模型進行管理:

# admin.py
from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title',)

建立表單(Forms)

為了讓使用者能輸入標籤,我們需要一個對應的表單:

# forms.py
from django import forms
from .models import Article

class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ['title', 'content', 'tags']

建立檢視與範本(Views & Templates)

創建文章檢視

我們會建立一個檢視函式,允許使用者新增文章並輸入標籤:

# views.py
from django.shortcuts import render, redirect
from .forms import ArticleForm

def create_article(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('article_list')  # 重定向至文章列表
    else:
        form = ArticleForm()
    return render(request, 'create_article.html', {'form': form})

創建範本

新增對應的範本檔案 templates/create_article.html:

<h2>Create New Article</h2>
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Create</button>
</form>

查詢特定標籤的文章

篩選標籤文章的檢視

我們可以撰寫一個檢視函式,根據標籤名稱篩選文章:

# views.py
from .models import Article

def articles_by_tag(request, tag_name):
    articles = Article.objects.filter(tags__name__in=[tag_name])
    return render(request, 'articles_by_tag.html', {'articles': articles, 'tag': tag_name})

對應的範本

建立範本檔案 templates/articles_by_tag.html:

<h2>Articles with tag: {{ tag }}</h2>
{% for article in articles %}
    <h3>{{ article.title }}</h3>
    <p>{{ article.content }}</p>
{% endfor %}

設定 URL 路由

將檢視函式與範本綁定至 URL:

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('create/', views.create_article, name='create_article'),
    path('tag/<str:tag_name>/', views.articles_by_tag, name='articles_by_tag'),
]

使用標籤範例

完成上述設定後,使用者可以:

  1. 在文章表單中輸入自訂標籤,例如:Django, Python, Web Development。
  2. django-taggit 會自動建立這些標籤,並將其存入資料庫中。
  3. 瀏覽特定標籤的文章,篩選結果將自動顯示。

結語

透過以上步驟,我們成功在 Django 專案中整合了標籤功能。

django-taggit 提供了簡單易用的工具,讓開發者能快速為內容分類與篩選,提升應用程式的可用性與用戶體驗。

希望這篇教學對你有所幫助,現在就開始打造你的標籤系統吧!

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

Python

目錄

  • 安裝與設定環境
  • 安裝 django-taggit
  • 在 settings.py 中啟用套件
  • 建立模型(Models)
  • 更新資料庫
  • 在管理後台顯示標籤模型
  • 建立表單(Forms)
  • 建立檢視與範本(Views & Templates)
  • 創建文章檢視
  • 創建範本
  • 查詢特定標籤的文章
  • 篩選標籤文章的檢視
  • 對應的範本
  • 設定 URL 路由
  • 使用標籤範例
  • 結語