Django博客开发教程:实现标签页面
1.1、Django博客开发教程:开发前的准备2.2、Django博客开发教程:项目需求分析3.Django博客开发教程:数据库设计分析4.Django博客开发教程:创建项目5.Django博客开发教程:基础配置6.Django博客开发教程:欢迎页面7.Django博客开发教程:创建数据库模型8.Django博客开发教程:用Admin管理后台管理数据9.Django博客开发教程:使用富文本编辑器添加数据10.Django博客开发教程:使用ckeditor富文本编辑器添加数据11.Django博客开发教程:URL与视图函数12.Django博客开发教程:体验django模板,13.Django博客开发教程:体验数据查询14.Django博客开发教程:一些常用的模板使用方法15.Django博客开发教程:实现模板之前的分析与准备16.Django博客开发教程:实现网站首页17.Django博客开发教程:实现文章列表18.Django博客开发教程:实现文章内容页
19.Django博客开发教程:实现标签页面
20.Django博客开发教程:实现搜索页面21.Django博客开发教程:单页面实现与代码优化标签列表是的URL是:网站域名/tag/标签名,标签名是URL里的<tag>传进来的。标签页面和列表页面展现样式是一样的,前面我们也提及过,所以我们直接复制list.html页面,然后更名为tags.html。
视图函数代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | blog /views .py def tag(request, tag): list = Article.objects.filter(tags__name=tag) #通过文章标签进行查询文章 remen = Article.objects.filter(tui__id=2)[:6] allcategory = Category.objects.all() tname = Tag.objects.get(name=tag) #获取当前搜索的标签名 page = request.GET.get( 'page' ) tags = Tag.objects.all() paginator = Paginator(list, 5) try: list = paginator.page(page) # 获取当前页码的记录 except PageNotAnInteger: list = paginator.page(1) # 如果用户输入的页码不是整数时,显示第1页的内容 except EmptyPage: list = paginator.page(paginator.num_pages) # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容 return render(request, 'tags.html' , locals()) |
标签列表页的实现,没有什么特别需要留意的地方。和列表页差不多,我直接上代码。打开templates/tags.html页面找到下面位置进行修改。
您的位置:
1 2 3 4 | templates /tags .html <div class= "breadcrumb" >您的位置: <a itemprop= "breadcrumb" href= "{% url 'index' %}" >首页< /a > » <span class= "current" >标签:{{ tname }}< /span >< /div > |
获取当前页面查询的标签名:
1 2 3 4 5 | templates /tags .html <div class= "main-title" > <h4 class= "post-left-title" >标签:{{ tname }}< /h4 > < /div > |
显示当前标签下的所有文章:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | templates /tags .html {% for list in list %} <div class= "article-box clearfix excerpt-1" > <div class= "col-md-4" > <div class= "thumbnail" > <a href= "{% url 'index' %}show-{{ list.id }}.html" title= "{{ list.title }}" > <img src= "{% url 'index' %}media/{{ list.img }}" srcset= "{% url 'index' %}media/{{ list.img }}" alt= "{{ list.title }}" class= "wp-post-image" width= "240" height= "160" />< /a > < /div > < /div > <div class= "col-md-8" > <h2><a href= "{% url 'index' %}show-{{ list.id }}.html" target= "_blank" title= "{{ list.title }}" >{{ list.title }}< /a >< /h2 > <p class= "txtcont hidden-xs" ><a href= "{% url 'index' %}show-{{ list.id }}.html" target= "_blank" title= "{{ list.title }}" >{{ list.excerpt }}< /a >< /p > <div class= "meta" ><span class= "label label-info" ><a href= "{% url 'index' %}list-{{ list.category_id }}.html" >{{ list.category.name }}< /a >< /span > < time class= "item" ><i class= "fa fa-clock-o" >< /i >{{ list.created_time| date : "Y年m月d日" }} < /time > < /div > < /div > < /div > {% endfor %} |
列表分页:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | templates /tags .html <div class= "pagination" > <ul> {% if list.has_previous %} <li class= "prev-page" ><a href= "?page={{ list.previous_page_number }}" >上一页< /a >< /li > {% else %} <li class= "prev-page" >< /li > {% endif %} {% for num in list.paginator.page_range %} {% if num %} {% ifequal num list.number %} <li class= "active" ><span>{{ num }}< /span >< /li > {% else %} <li><a href= "?page={{ num }}" >{{ num }}< /a >< /li > {% endifequal %} {% else %} <li class= "disabled" ><span>...< /span >< /li > {% endif %} {% endfor %} {% if list.has_next %} <li class= "next-page" ><a href= "?page={{ list.next_page_number }}" >下一页< /a >< /li > {% else %} <li class= "prev-page" >< /li > {% endif %} < /ul > < /div > |
标签页面实现完毕!
合集:
Django博客开发教程
分类:
开发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理