Django之tag的使用
2016-04-20 09:43
453 查看
settings.py:
#安装
pip install django-taggit
实体类中进行定义:
html:
urls.py:
views.py:
http://127.0.0.1:8000/myblog/?page=3
![](https://images2015.cnblogs.com/blog/879525/201604/879525-20160420094056460-1713310418.png)
http://127.0.0.1:8000/myblog/tag/python/
#安装
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
![](https://images2015.cnblogs.com/blog/879525/201604/879525-20160420094056460-1713310418.png)
http://127.0.0.1:8000/myblog/tag/python/
![](https://images2015.cnblogs.com/blog/879525/201604/879525-20160420094122585-1973326111.png)
相关文章推荐
- Google推荐的图片加载库Glide介绍
- Django初学笔记1.
- [HDU 5512][2015ACM/ICPC亚洲区沈阳站] Pagodas 博弈论
- BZOJ 4510|USACO 2016 Jan Gold|Ratio Contact|动态规划
- Fibonacci 矩阵快速幂
- Django 异常解决
- Django初识
- google hash table ------稀疏hash表之sparse hashtable
- django 链接地址匹配流程
- 在浏览器中输入Google.com并且按下回车之后发生了什么?
- 1003,1004,1005 Hangover,财务管理,I Think I Need a Houseboat
- BZOJ 4509 USACO 2016 Jan Gold Angry Cows
- django post_save post_delete
- django views test
- Digogo ugdx文件的制作
- Digogo ugdx文件的制作
- go语言scan空值报错
- NYOJ 30 Gone Fishing(贪心)(个人理解笔记)
- Django若干新版本一些新特性
- django1.8升级1.9的几个问题