文章目录

  • 添加跳转方法
  • 前端页面
  • 访问某个博客url设置
  • 访问主页url设置
  • 添加博客总数的显示
  • 判断为空,添加一条提示
  • 长博客显示限制
  • 过滤时间,添加显示字段
  • 博客类跳转到标签的功能
  • 常用的模板标签

添加跳转方法

# 用模板显示响应的内容
from django.shortcuts import render_to_response, get_objects_or_404
from .models import Blog# 博客列表
def blog_list(request):content = {}# 字典的key是对应的名称content['blogs'] = Blog.objects.all()# 传给前台数据并取得响应return render_to_response('blog_list.html', content)# 博客详情
def blog_detail(request, blog_pk):content = {}# 根据主键查询博客content['blog'] = get_object_or_404(Blog, pk=blog_pk)return render_to_response('blog_detail.html', content)

前端页面

blog_detail.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>{{ blog.title }}</title>
</head>
<body><h3>{{ blog.title }}</h3><p>{{ blog.content }}</p>
</html>

blog_list.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>我的网站</title>
</head>
<body>{% for blog in blogs %}<h3>{{ blog.title }}</h3><p>{{ blog.content }}</p>{% endfor %}
</body>
</html>

访问某个博客url设置

blog/urls.py

from django.urls import path
from . import viewsurlpatterns = [path('<int:blog_pk>', views.blog_detail, name='blog_detail'),
]

访问主页url设置

from django.contrib import admin
from django.urls import include, path
from blog.views import blog_listurlpatterns = [path('', blog_list, name='home'),path('admin/', admin.site.urls),path('blog/', include('blog.urls')),
]

博客标题加上超链接
blog_list.py

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>我的网站</title>
</head>
<body><h2>个人博客网站</h2><hr>{% for blog in blogs %}<a href="{% url 'blog_detail' blog.pk %}"><h3>{{ blog.title }}</h3></a><p>{{ blog.content }}</p>{% endfor %}
</body>
</html>

添加博客总数的显示

第一种方法 : 添加{{ blogs | length }} , {{ blogs | length }}是一个过滤器

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>我的网站</title>
</head>
<body><h2>个人博客网站</h2><hr><h3>一共有{{ blogs | length }}篇博客</h3>{% for blog in blogs %}<a href="{% url 'blog_detail' blog.pk %}"><h3>{{ blog.title }}</h3></a><p>{{ blog.content }}</p>{% endfor %}
</body>
</html>

第二种方法 : 通过处理方法返回
views.py

# 博客列表
def blog_list(request):content = {}# 字典的key是对应的名称content['blogs'] = Blog.objects.all()content['count'] = Blog.objects.all().count()# 传给前台数据并取得响应return render_to_response('blog_list.html', content)

blog_list.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>我的网站</title>
</head>
<body><h2>个人博客网站</h2><hr><h3>一共有{{ count }}篇博客</h3>{% for blog in blogs %}<a href="{% url 'blog_detail' blog.pk %}"><h3>{{ blog.title }}</h3></a><p>{{ blog.content }}</p>{% endfor %}
</body>
</html>

判断为空,添加一条提示

使用{% empty %}, 在for标签里面可以拓展

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>我的网站</title>
</head>
<body><h2>个人博客网站</h2><hr><h3>一共有{{ count }}篇博客</h3>{% for blog in blogs %}<a href="{% url 'blog_detail' blog.pk %}"><h3>{{ blog.title }}</h3></a><p>{{ blog.content }}</p>{% empty %}<p>-- 暂无博客, 敬请期待! --</p>{% endfor %}
</body>
</html>

长博客显示限制

使用过滤器, 在要过滤的字段后面加上 | 和条件

<!DOCTYPE html>
<html>
...
<body><h2>个人博客网站</h2><hr>{% for blog in blogs %}<a href="{% url 'blog_detail' blog.pk %}"><h3>{{ blog.title }}</h3></a><p>{{ blog.content | truncatechars:30 }}</p>{% empty %}<p>-- 暂无博客, 敬请期待! --</p>{% endfor %}<h3>一共有{{ count }}篇博客</h3>
</body>
</html>

过滤时间,添加显示字段

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>{{ blog.title }}</title>
</head>
<body><a href="{% url 'home' %}"><h2>个人博客网站</h2></a><h3>{{ blog.title }}</h3><p>作者: {{ blog.author }}</p><p>发表时间: {{ blog.created_time | date:"Y-m-d H:n:s" }}</p><p>分类: {{ blog.blog_type }}</p><p>{{ blog.content }}</p>
</html>

博客类跳转到标签的功能

规定一个跳转的网址
urls.py

from django.urls import path
from . import viewsurlpatterns = [path('<int:blog_pk>', views.blog_detail, name='blog_detail'),path('<break/int:blog_type_pk>', views.blog_with_type, name='blog_with_type'),
]

处理方法
view.py

# 博客分类
def blog_with_type(request, blog_type_pk):content = {}blog_type = get_object_or_404(BlogType, pk=blog_type_pk)content['blogs'] = Blog.objects.filter(blog_type=blog_type)content['blog_type'] = blog_typereturn render_to_response('blog_with_type.html', content)

模板页面

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>{{ blog_type.type_name }}</title>
</head>
<body><h2>个人博客网站</h2><hr><h2>{{ blog_type.type_name }}</h2>{% for blog in blogs %}<a href="{% url 'blog_detail' blog.pk %}"><h3>{{ blog.title }}</h3></a><p>{{ blog.content | truncatechars:30 }}</p>{% empty %}<p>-- 暂无博客, 敬请期待! --</p>{% endfor %}<h3>一共有{{ blogs | length }}篇博客</h3>
</body>
</html>

常用的模板标签

循环 : for
条件 : if (可逻辑判断) , ifequal, ifnotequal
链接 : url
模板嵌套 : blogk, extends, include
注释 : {# #}

【django】三、常用的模板标签和过滤器相关推荐

  1. 08常用的模板标签和过滤器

    技术交流QQ群:1027579432,欢迎你的加入! 本教程来源于B站杨仕航Django2.0开发视频教程,如需转载,必须注明来源! 1.继续搭建blog [外链图片转存失败,源站可能有防盗链机制,建 ...

  2. django “如何”系列4:如何编写自定义模板标签和过滤器

    django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足你的要求,如果觉得需更精准的模板标签或者过滤器,你可以自己编写模板标签和过滤器,然后使用{% load %}标签使用他们. 代码 ...

  3. The Definitive Guide To Django 2 学习笔记(八) 第四章 模板 (四)基本的模板标签和过滤器...

    标签 下面的部分概述了常见的Django标签. if/else {%if%} 标签 对一个变量值进行测试,如果结果为true,系统将会显示在{%if%} 和 {%endif%}之间的一切,看个例子: ...

  4. Django 2.1.3 文档-模板-内置标签和过滤器(tagfilter)

    内置标签和过滤器 1.内置标签 一览 autoescape block comment csrf_token cycle debug extends filter(标签filter而不是过滤器filt ...

  5. Django内建模版标签和过滤器

    第四章列出了许多的常用内建模板标签和过滤器.然而,Django自带了更多的内建模板标签及过滤器.这章附录列出了截止到编写本书时,Django所包含的各个内建模板标签和过滤器,但是,新的标签是会被定期地 ...

  6. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...

  7. django中自定义标签和过滤器

    django中自定义标签和过滤器 原文:http://www.cnblogs.com/MnCu8261/p/5934203.html 纪念如何填了半天的坑,红色重点 想要实现自定义标签和过滤器需要进行 ...

  8. python-django_自定义标签和过滤器_模板的导入与继承_静态文件使用方式_inclusion_tag的用法

    django 1. 自定义标签和过滤器 1. 自定义过滤器 -第一步:在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag-第二步:在 ...

  9. django自定义过滤器及模板标签

    django自定义过滤器及模板标签 文件路径配置: 某个app特有的 -app 目录下,新建templatetags 文件夹 -再到 templatetags 文件夹下创建python模块(py文件) ...

最新文章

  1. 根据IP查找在交换机上的端口
  2. RxJava 常用总结以及原理理解
  3. Session的几个主要方法
  4. Cvmat IplImage
  5. abap代码获取采购订单po中的抬头文本
  6. 提高篇 第二部分 字符串算法 第3章 Trie字典树
  7. MySQL2种多实例部署方式总结
  8. 【Android】attr、style和theme
  9. JavaScript 九种跨域方式实现原理 1
  10. 学python买什么书-Python爬虫入门看什么书好 小编教你学Python
  11. [转载]架构指南 : Java1.7+Eclipse luna + Maven 3.2.5 +spring 4.1.4
  12. 国内银行卡BIN号速查简表
  13. pm2 start 带参数_pm2 start命令进阶详解
  14. 呼叫中心来电弹屏功能怎么样
  15. android编程拨号界面,在Android4.0中Contacts拨号盘界面剖析(源码)
  16. “安卓僵尸”变种木马
  17. 电子计算机的清除,计算器的清除键是什么
  18. 4 第二式:左右开弓似射雕
  19. 台式计算机能用蓝牙耳机吗,台式电脑可以连蓝牙耳机吗_台式电脑可以连蓝牙吗-win7之家...
  20. UGUI内核大探究(十六)InputField

热门文章

  1. 【codevs1074】食物链
  2. 2017.9.20 cheat 失败总结
  3. 2017.6.6 数表 思考记录
  4. 2017.3.12 lzy 测试
  5. php oracle 删除 数据,oracle怎么清空表数据
  6. 【英语学习】【WOTD】decoct 释义/词源/示例
  7. 【英语学习】 - 君若不离不弃,吾当生死相依
  8. Intel Haswell/Broadwell架构/微架构/流水线 (2)-流水线前端
  9. python80行代码写一个文件整理软件
  10. ajax 解析数组集合,ajax怎样解析json数组并用模板引擎渲染