Django之博客系统:增加标签
一般在发表博客后会给每个帖子加上一个标签。类似帖子关键字的功能。在这一章中来看下如何给博客添加标签功能(tagging)
添加标签需要集成第三方的Django标签应用来完成这个功能。django-taggit是一个可复用的应用,它会提供给你一个Tag模型(model)和一个管理器(manager)来方便的给任何模型(model)添加标签
安装好后,首先在setting.py中引用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'taggit',
]
打开你的blog应用下的model.py文件,给Post模型(model)添加django-taggit提供的TaggableManager管理器(manager),使用如下代码:这个tags管理器(manager)允许你给Post对象添加,获取以及移除标签
from taggit.managers import TaggableManager
class Post(models.Model):
tags=TaggableManager()
class Meta:
ordering=('-publish',)
def __str__(self):
return self.title
既然修改了模型,那么就需要同步数据库进行迁移。
zhf@zhf-maple:~/py_prj/mysite$ python manage.py makemigrations
Migrations for 'blog':
blog/migrations/0004_post_tags.py
- Add field tags to post
zhf@zhf-maple:~/py_prj/mysite$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions, taggit
Running migrations:
Applying taggit.0001_initial... OK
Applying taggit.0002_auto_20150616_2121... OK
Applying blog.0004_post_tags... OK
然后我们在命令行来测试下是否可用。打开终端运行命令python manage.py shell
In [1]: from blog.models import Post
#取得Post模型并进行tag添加
In [2]: post=Post.objects.get(id=1)
In [4]: post.tags.add('java','c++','python')
#显示所有的tag
In [5]: post.tags.all()
Out[5]: <QuerySet [<Tag: python>, <Tag: java>, <Tag: c++>]>
#移除其中一个tag
In [6]: post.tags.remove('c++')
In [7]: post.tags.all()
Out[7]: <QuerySet [<Tag: python>, <Tag: java>]>
接下来运行服务器。来到后台查看下。可以看到新增了标签页面

点击进去可以看到我们添加的标签

此外我们进入具体的帖子
http://127.0.0.1:8000/admin/blog/post/ 也可以对标签进行编辑

接下来我们要做的就是在模板中将这些标签给显示出来。
在list.html中添加如下来显示标签
<p class="tags">标签:{{ p.tags.all|join:"," }}</p>
join模板(template)过滤器(filter)的功能类似python字符串的join()方法,将给定的字符串连接起来。在浏览器中打开 http://127.0.0.1:8000/blog/ 。 你会看到每一个帖子的标题下面的标签列表:

Django之博客系统:增加标签的更多相关文章
- Django练习——博客系统小试
在上一篇博客Todolist的基础上(http://blog.csdn.net/hcx25909/article/details/24251427),本周继续进行实践,这次我要搭建一个简单的博客系统. ...
- 纯django开发博客系统
企业级教程:纯django开发博客系统 1.视频教程 https://www.duanshuilu.com/ 2.教程文档 https://www.duanshuilu.com/ 0.课程简介1.简价 ...
- Django(博客系统):基于pycharm如何一个django工程下创建多个app
背景:通常我们创建一个django系统时,为了把业务模块划分清楚往往会把一个独立的业务模块放到一个app中,如果多个独立的业务模块就会创建多个app,一般情况下为了更好的管理这些app,会把他们都存放 ...
- Django之博客系统搭建一
前面已经介绍了django的各种用法,从这一章开始,将实际搭建一个blog系统. 首先我们需要设计blog的模型,在models.py中添加如下内容 # -*- coding: utf-8 -*- f ...
- 【django之博客系统开发】
一.项目简介 使用django开发一套博客系统,参考博客园. 需求如下: 项目结构: 二.全部代码 from django.db import models # Create your models ...
- Django之博客系统邮件分享博客
在上一章中,我们创建了一个基础的博客应用,我们能在http://127.0.0.1:8000/blog/显示我们的博客.在这一章我们将尝试给博客系统添加一些高级的特性,比如通过email来分享帖子,添 ...
- Django之博客系统:增加评论
3既然是博客,那肯定就有留言评论系统.在这一章就来建立一个评论系统. 1 创建一个模型来保存评论 2 创建一个表单来提交评论并且验证输入的数据 3 添加一个视图函数来处理表单和保存新的评论到数据库 4 ...
- Django之博客系统:自定义模板标签
Django提供了很多内置的模板标签比如{% if %}或者{% block %}Django也允许你创建自己的模板标签(template tags)来执行自定义的动作.当你需要在你的模板中添加功能而 ...
- Django之博客系统:用户登陆
使用django有一个好处就是有各种各样的框架可以拿来直接使用.相比flask,django自带的框架确实要多很多.比如这一章就要介绍的用户登录.Django拥有一个内置的认证(authenticat ...
随机推荐
- ASP.NET网站性能提升的几个方法
1. HTTP 压缩 HTTP 压缩通常用于压缩从服务端返回的页面内容.它压缩HTTP请求和响应,这个会是巨大的性能提升.我的项目是基于Window Server 2003开发的,可以参考这篇文章. ...
- Cache缓存优化
降低数据库压力 <appSettings><add key="/></appSettings> //设置实体缓存时间 public RupengWang. ...
- DB字段顺序与类的属性顺序一致:{Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER
{Oracle.DataAccess.Client.OracleException ORA-00932: 数据类型不一致: 应为 TIMESTAMP, 但却获得 NUMBER 应用程序中类型T ...
- uptime命令查看系统启动时间和运行时间、查看linux系统负载
1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00 2.查看/proc/uptime文件计算 ...
- 实验吧CTF题库-编程(部分)
百米 3秒提交答案,数字是随机变化的 利用Python脚本解题 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import ...
- JavaScript组合设模式--改进上述引入的例子
对于组合设计模式: (1)组合模式中把对象分为两种(组合对象,和叶子对象) (2)组合对象和叶子对象实现:同一批操作 (3)对组合对象执行的操作可以向下传递到叶子节点进行操作 (4)这样就会弱化类与类 ...
- java常用八大排序法
最近查资料发现java排序挺有意思的,其中包含常见八种具有代表性的排序法:笔者觉得排序的功能重要,但更重要的是排序的思想:所以简单叙述一下常见排序方法名称,并用代码举例. A.插入排序(直接插入排序. ...
- 20行核心代码:jQuery实现省市二级联动
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- iOS 打包生成ipa文件(使用终端命令打包)
1. 打开终端 2.在终端输入cd +空格 把工程文件直接拖到终端,然后回车 3. 在终端输入xcodebuild,回车 然后你可以发现工程文件里多了一个build文件夹 在build文件夹中,有一个 ...
- Ubuntu 添加用户到sudoers
ubuntu上的用户有时候需要用到管理员权限,可以通过修改 /etc/sudoers 文件内容添加用户权限. 操作方式 1. 首先以root进入系统打开文件 sudo vim /etc/sudoers ...