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. 【11】 Express安装入门与模版引擎ejs

    前言 Express简介和安装 运行第一个基于express框架的Web 模版引擎 ejs express项目结构 express项目分析 app.set(name,value) app.use([p ...

  2. 【06】Vue 之 组件化开发

    组件其实就是一个拥有样式.动画.js逻辑.HTML结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue的组件和也做的非常彻底,而且有自己的特色.尤其是她 ...

  3. POJ2478 Farey Sequence

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15023   Accepted: 5962 Description The ...

  4. Codevs 4633 [Mz]树链剖分练习

    4633 [Mz]树链剖分练习 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description 给定一棵结点数为n的树,初始点权均为0,有依次q个 ...

  5. 遍历datalist中的checkbox,并获取此时的值

    原文发布时间为:2009-04-29 -- 来源于本人的百度文章 [由搬家工具导入] protected void Page_Load(object sender, EventArgs e) { if ...

  6. C#Url传递中文参数时解决方法

    原文发布时间为:2008-11-05 -- 来源于本人的百度文章 [由搬家工具导入] 1.设置web.config文件。<system.web> <globalization req ...

  7. java网络编程(二)

    客户端程序: package net; import java.io.OutputStream; import java.net.Socket; /** * Created by hu on 2015 ...

  8. Python 多核 多线程 调度

    参考: http://www.oschina.net/translate/pythons-hardest-problem https://news.ycombinator.com/item?id=58 ...

  9. iptables之centos6版本常用设置

    默认策略 # iptables -LChain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywh ...

  10. 解决IE6的PNG透明

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