在Django项目中使用Django-Taggit添加标签
Django-Taggit是一个Django应用程序,用于为博客、文章等添加标签。它使我们能够非常容易地在我们的Django项目中添加标签功能。
设置Django项目。
- 安装django-taggit
pip install django-taggit
- 将其添加到主项目的settings.py文件中。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'taggit'
]
- 对models.py文件的修改
在你的帖子、博客、文章模式中添加TaggableManager
from django.db import models
from django.utils.timezone import now
from taggit.managers import TaggableManager
class Post(models.Model):
postid = models.AutoField(primary_key=True)
title = models.CharField(max_length=255)
content = models.TextField()
author = models.CharField(max_length=100)
postauthor = models.ForeignKey(User, on_delete=models.CASCADE)
slug = models.SlugField(unique=True)
category = models.CharField(max_length=200)
timestamp = models.DateTimeField(default=now, blank=True)
tags = TaggableManager()
添加TaggableManager后,在终端运行以下命令。
TaggableManager将作为一个字段自动显示在后部模式中。
Taggit模式也将作为一个单独的模式自动出现在管理面板中。
管理面板中的Taggit模式
Adding tags
1) 如果输入的标签不包含任何逗号或双引号,它将被视为以空格分隔的列表
标签名称。
geeks for geeks => "geeks", "for", "geeks"
2) 如果输入的标签确实包含逗号或双引号,那么:
a) geeks, geeks for geeks => "geeks", "geeks for geeks"
b) "geeks, forgeeks" geek geeksfor => "geeks, forgeeks", "geek", "geeksfor"
c) "geeks, forgeeks", geek geeksfor => "geeks, forgeeks", "geeks geeksfor"
d) geeks "for" geeks => "geeks", "for", "geeks"
在向帖子添加标签后,taggit模式将看起来像。
所有与不同帖子相关的标签将出现在taggit下的标签模式中。
在点击特定的标签时,会出现一个与该特定标签相关的所有帖子的列表。现在这个模型可以像其他模型一样在项目中使用