settings.py:

#安装

pip install django-taggit

INSTALLED_APPS = [
'myblog',
'taggit',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

实体类中进行定义:

from taggit.managers import TaggableManager
class Post(models.Model):
'''
实体-文章类
发布的文章
'''
STATUS_CHOICES={
('draft', '草稿'),
('published', '发布'),
}
title=models.CharField(max_length=300,verbose_name='文章标题')
zhaiyao=models.TextField(verbose_name='摘要')
content=models.TextField(verbose_name='文章内容')
author = models.ForeignKey(User,related_name='blog_posts')
publish = models.DateTimeField(default=timezone.now,verbose_name='发布时间')
created = models.DateTimeField(auto_now_add=True,verbose_name='提交时间')
updated = models.DateTimeField(auto_now=True,verbose_name='更新时间')
status=models.CharField(max_length=10,choices=STATUS_CHOICES)
tags=TaggableManager
published=PublishedManager()
# #分类标签
tags = TaggableManager() class Meta:
ordering = ('-publish',) def __str__(self):
return self.title def __unicode__(self):
return self.title def get_absolute_url(self):
return reverse('myblog:post_detail',args=[self.publish.year,
self.publish.strftime('%m'),
self.publish.strftime('%d'),
self.title.encode('utf-8')])

html:

{% extends "myblog/base.html" %}
{% block content %}
{% if tag %}
<h2>Posts tagged with "{{ tag.name }}"</h2>
{% endif %}
{% for post in posts %}
<h2>
<a href="{{ post.get_absolute_url }}">{{ post.title }}</a>
</h2>
<p class="tags">
{# {{ post.tags.all|join:", " }}#}
标签:
{% for tag in post.tags.all %}
<a href="{% url "myblog:post_list_by_tag" tag.slug %}">
{{ tag.name }}
</a>
{% if not forloop.last %}
,
{% endif %}
{% endfor %}
</p>
{# posted @ 2016-04-18 16:16 similarface#}
<p class="date">
posted@{{ post.publish }} {{ post.author }}
</p>
{{ post.body|truncatewords:30|linebreaks }}
{% endfor %}
{% include "pagination.html" with page=posts %}
{# {% include "pagination.html" with page=page_obj %}#}
{% endblock %}

urls.py:

    url(r'^tag/(?P<tag_slug>[-\w]+)/$', views.post_list,name='post_list_by_tag'),

views.py:

def post_list(request,tag_slug=None):
'''
文章的列表
:param request:
:return:所有文章的列表
'''
#获取所有的published的文章
object_list=Post.published.all()
tag=None
if tag_slug:
tag=get_object_or_404(Tag,slug=tag_slug)
object_list=object_list.filter(tags__in=[tag])
paginator=Paginator(object_list,3)
#rquest没有就返回None
page=request.GET.get('page')
try:
posts=paginator.page(page)
except PageNotAnInteger:
posts=paginator.page(1)
except EmptyPage:
posts=paginator.page(paginator.num_pages)
return render(request,'myblog/post/list.html',{'page':page,'posts':posts,'tag':tag})

http://127.0.0.1:8000/myblog/?page=3

http://127.0.0.1:8000/myblog/tag/python/

Django之tag的使用的更多相关文章

  1. Django之tag标签和filter标签

    1.Django的tag常见的标签,可以做一些简单的功能 {%if%} 的使用主要用于做判断,还可以包含{%elif%} 这样的用法,最后要跟上{% endif %}.可以使用你的and,or,not ...

  2. django中tag的用法

    在app里建一个子的python包,包含__init__.py,包名为templatetags,里面新建一个tags.py(这个名字可以随意) from django import templater ...

  3. 建立DJANGO的自定义TAG

    DJANGO的TAG分为三类: • simple_tag : Processes the data and returns a string• inclusion_tag : Processes th ...

  4. Django基础007--filter&tag

    1.Django自带的过滤器filter def index(request): print('index...........') navs = '今天天气真好fdsfds!!!' title='& ...

  5. Django 中 如何使用 settings.py 中的常量

    在用django 框架开发 python web 程序的时候 , 在模板页面经常会用到 settings.py 中设置的常量,比如MEDIA_URL, 我尝试过在模板页面用类似如下的方式 程序代码 { ...

  6. Awesome Django

     Awesome Django    If you find Awesome Django useful, please consider donating to help maintain it. ...

  7. Django 项目补充知识(JSONP,前端瀑布流布局,组合搜索,多级评论)

    一.JSONP 1浏览器同源策略 通过Ajax,如果在当前域名去访问其他域名时,浏览器会出现同源策略,从而阻止请求的返回 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一 ...

  8. django tag

    官方文档:https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/#simple-tags stackoverflow de ...

  9. Django里面的自定义tag和filter

    Django的文档里面有这么一句 The app that contains the custom tags must be in INSTALLED_APPS  in order for the { ...

随机推荐

  1. Document类

    一.类结构 org.jsoup.nodes Class Document java.lang.Object org.jsoup.nodes.Node org.jsoup.nodes.Element o ...

  2. 【Android】SQLite基本用法(转)

    在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面.本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的.一. ...

  3. python编程(python开发的三种运行模式)【转】

    转自:http://blog.csdn.net/feixiaoxing/article/details/53980886 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 单循环 ...

  4. linux下轻松修改pdf文件

    前几天使用firefox打印了一个网页,后来查看有很多页面都是评论,对我来说,实在没有什么用处,就想把多余的内容给删除了,后来,终于找到了一个工具:pdf mod非常不错的工具,直接打开文件,选择要删 ...

  5. 关于Xcode6 的自定义模板位置

    自定义模板放置位置: Xode6 -> 打开App 后, /Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xc ...

  6. Ubuntu中vim添加lua支持

    系统:Ubuntu 15.10/16.04 因为Ubuntu15.10系统自带vim不支持lua,所以得自己编译安装. $ sudo apt install vim-nox vim-nox可以让vim ...

  7. java通过读取本地文件获取反射方法参数,执行对象方法

    运用到的知识点 IO流, 集合properties   反射 在工程目录下新建file   config.properties #one time only can run one method cl ...

  8. JavaScript闭包 循环输出i

    html <body> <p>产品一</p> <p>产品二</p> <p>产品三</p> <p>产品四& ...

  9. 解决IE6的PNG透明

    http://www.jb51.net/article/35669.htm http://blog.csdn.net/mosliang/article/details/6760028

  10. ie8实现无刷新文件上传

    ie8由于无法使用FormData,想要无刷新上传文件就显得比较麻烦.这里推荐使用jQuery-File-Upload插件,它能够很方便的解决ie8无刷新文件上传问题.(最低兼容到ie6) jQuer ...