新手指南:在 Django 中實作標籤功能
更新日期: 2025 年 1 月 27 日
本文為 Django 標籤功能 系列文,第 1 篇
標籤(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'),
]
使用標籤範例
完成上述設定後,使用者可以:
- 在文章表單中輸入自訂標籤,例如:
Django, Python, Web Development
。 django-taggit
會自動建立這些標籤,並將其存入資料庫中。- 瀏覽特定標籤的文章,篩選結果將自動顯示。
結語
透過以上步驟,我們成功在 Django 專案中整合了標籤功能。
django-taggit
提供了簡單易用的工具,讓開發者能快速為內容分類與篩選,提升應用程式的可用性與用戶體驗。
希望這篇教學對你有所幫助,現在就開始打造你的標籤系統吧!