“标签”是作者从文章中提取的核心词汇,其他用户可以通过标签快速了解文章的关注点。每一篇文章的标签可能都不一样,并且还可能拥有多个标签,这是与栏目功能不同的。
好在标签功能也有优秀的三方库:Django-taggit,省得自己动手设计了。快速开发就是这样,能“借用”就不要自己重复劳动。
安装及设置
首先在虚拟环境中安装Django-taggit:
pip install django-taggit
安装成功后,修改项目设置以添加库:
my_blog/settings.py
...
INSTALLED_APPS = [
...
'taggit',
]
...
修改文章模型
标签是文章Model的属性,因此需要修改文章模型。
需要注意的是标签引用的不是内置字段,而是库中的TaggableManager,它是处理多对多关系的管理器:
article/models.py
...
# Django-taggit
from taggit.managers import TaggableManager
...
class ArticlePost(models.Model):
...
# 文章标签
tags = TaggableManager(blank=True)
...
然后记得数据迁移。
带标签文章的发表
修改文章的表单类,让其能够提交标签字段:
article/forms.py
...
class ArticlePostForm(forms.ModelForm):
class Meta:
...
fields = ('title', 'body', 'tags')
然后修改发表文章的视图,保存POST中的标签:
article/views.py
...
def article_create(request):
# 已有代码
if request.method == "POST":
article_post_f