Django开发个人博客网站——18、实现博客的分类
2018-02-04 17:25
881 查看
我们在设计博客的数据库时,分别定义了博客的分类和标签,规定博客与博客的分类为一对多关系,也就是一个博客只能有一个分类,而博客的标签则为多对多的关系,一个博客可以有多个标签。按照功能来划分的话,也就是博客的标签是对博客分类的一个补充。
考虑到我们已经为博客网站设计了标签云,如果再设计一个分类云的话,就显得重复了,为此,我们不再单独创建分类页面,而直接在博客详情页面中添加博客分类的入口,这样既能查询到该博客分类下的所有博客,也避免了功能上的重复。
分类详情页面的设计跟标签详情页面时一模一样的,这里直接给代码。
category-detail.html
这里面写法同标签详情页是一样的,这里不再赘述了,不要忘了添加上分页。
index.html
同样别忘了在博客详情页面中将分类的url添加进来。
——————————————————————————————————————————
项目的完整代码:django_blog
觉得有用的欢迎给个star。
考虑到我们已经为博客网站设计了标签云,如果再设计一个分类云的话,就显得重复了,为此,我们不再单独创建分类页面,而直接在博客详情页面中添加博客分类的入口,这样既能查询到该博客分类下的所有博客,也避免了功能上的重复。
分类详情页面的设计跟标签详情页面时一模一样的,这里直接给代码。
1、创建模板
可以直接将tag-detail.html直接复制重命名为category-detail.html即可,因为他们看起来是一样的。category-detail.html
{% extends 'base.html' %} {% block title %} {{ category_name }}分类 {% endblock %} {% block content %} <div class="content-wrap"> ... {% endblock %}
这里面写法同标签详情页是一样的,这里不再赘述了,不要忘了添加上分页。
2、创建视图函数
view.pyclass CategoryDetaiView(View): def get(self, request, category_name): category = Category.objects.filter(name=category_name).first() cate_blogs = category.blog_set.all() # 分页 try: page = request.GET.get('page', 1) except PageNotAnInteger: page = 1 p = Paginator(cate_blogs, 5, request=request) cate_blogs = p.page(page) return render(request, 'category-detail.html', { 'cate_blogs': cate_blogs, 'category_name': category_name, })
3、创建url
urls.pyfrom myblog.views import CategoryDetaiView url(r'^category/(?P<category_name>\w+)/$', CategoryDetaiView.as_view(), name='category_name'),
4、修改模板
修改主页和博客详情页的模板,将分类url添加进来。index.html
<a href="{% url 'category_name' blog.category.name %}" itemprop="url" rel="index"> <span itemprop="name">{{ blog.category.name }}</span> </a>
同样别忘了在博客详情页面中将分类的url添加进来。
——————————————————————————————————————————
项目的完整代码:django_blog
觉得有用的欢迎给个star。
相关文章推荐
- Django开发个人博客网站——15、通过markdown实现博客内容的展示
- Django开发个人博客网站——10、分页功能的实现
- Django开发个人博客网站——13、实现标签下所有博客的展示
- Django开发个人博客网站——19、通过Django Haystack实现搜索功能(上)
- Django开发个人博客网站——21、实现博客的统计功能
- Django开发个人博客网站——11、通过regroup实现博客的归档
- Django开发个人博客网站——24、服务器的远程连接管理
- Django开发个人博客网站——28、服务器centos7创建虚拟环境
- Django开发个人博客网站——5、创建第一个app
- Django开发个人博客网站——23、域名申请、备案与服务器的选择
- Django学习(二)——实现个人博客网站
- Django开发个人博客网站——29、服务器centos7安装uwsgi
- Django开发个人博客网站——31、给网站添加上404、500页面
- Django开发个人博客网站——2、通过virtualenv与virtualenvwrapper创建虚拟环境
- Django开发个人博客网站——7、通过admin管理后台
- Django开发个人博客网站——17、博客添加RSS订阅
- Django开发个人博客网站——26、服务器centos7安装mysql
- Django开发个人博客网站——8、博客首页的开发
- Django开发个人博客网站——22、博客的最后完善
- Django开发个人博客网站——1、开发环境