导例:

HTML可以被直接硬编码在views.py之中。如下:

在主urls.py文件中,添加新的条目:

path('show/', views.show),

然后,我们在blog的views.py中添加处理函数:

导入datetime和HttpResponse

def show(request):t = datetime.datetime.now()return HttpResponse("<h1>now time's %s</h1>" % t)

然后在浏览器中打开:

虽然,上面的方式也实现了目标内容的显示,但是不难发现:对页面设计进行的任何改变都必须对 Python 代码进行相应的修改。不利于合作分工的实现。编写 Python代码和设计人员制作模板两项工作应该同时进行,提高效率。

而且,将页面的设计和Python的代码分离开会更干净简洁更容易维护。关键是解耦。因为对于网站而言,后端的代码并不会经常修改,前端会经常修改。而且如果杂糅在一起,就要求前端的开发人员也要能看懂后端的代码,而且开发的效率不高。

在views.py中返回的render由来:

from django.template import Context, Templatedef show(request):template = Template("<h1>now time's {{ time }}</h1>")t = datetime.datetime.now()context = Context({'time': t})html = template.render(context)return HttpResponse(html)

相当于是底层封装了一下,然后我们才能使用下面这种简便的书写方式:

def show(request):t = datetime.datetime.now()return render(request, "time.html" , {'t':t})

应用:

<h1>now time's {{ t }} </h1>

效果:

上篇视图中也有介绍。

传入模板数据:句点字符 (.)

一、传入普通的列表

在views.py中传入列表数据:

def show(request):list= ['weizu','baidu','tent']return render(request, "time.html" , locals())

在time.html中,接收收到的数据:

<h1>列表数据:{{ list.0 }}</h1>
<h1>列表数据:{{ list.1 }}</h1>
<h1>列表数据:{{ list.2 }}</h1>

结果:

二、传入字典数据:

在views.py中传入列表数据:

def show(request):dict={'name':'weizu', 'age':23}return render(request, "time.html" , locals())

在time.html中,接收收到的数据:

<h1>字典数据:{{ dict.name }}</h1>
<h1>字典数据:{{ dict.age }}</h1>

结果:

三、传入对象数据:

在views.py中添加数据:

def show(request):s = stu('Tom', 23)return render(request, "time.html" , locals())

在time.py中,接收数据:

<h1>类对象数据:{{ s.name }}</h1>
<h1>类对象数据:{{ s.age }}</h1>

结果:

变量的过滤器filter  (以下案例不写传入具体部分了)

语法格式:      {{obj|filter:param}}   即:{{ 对象 | 过滤函数:过滤参数 }}

{{ name|lower }}。这将在变量 {{ name }} 被过滤器 lower 过滤后再显示它的值,该过滤器将文本转换成小写。使用管道符号 (|)来应用过滤器。过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:

如: {{ my_list|first|upper }} 将第一个元素并将其转化为大写。

内置过滤器:

upper  转字母为大写

传入:s = stu('Tom', 23)  # name age
渲染:<h1>{{ s.name | upper }}</h1>
效果:TOM

add   把add后的参数加给value

传入:value = 4
渲染:{{ value|add:"2" }}
效果:6
解释:过滤器首先会强制把两个值转换成Int类型。如果强制转换失败, 它会试图使用各种方式吧两个值相加。它会使用一些数据类型 (字符串, 列表, 等等.)

last   返回列表中的最后一个项目

传入:list ['a', 'b', 'c', 'd']
渲染:{{ value|last }}
效果:d

length  返回值的长度

传入:list=['a', 'b', 'c', 'd']  #或"abcd",
渲染:{{ value|length }}
效果:4

addslashes  给变量中的引号前加上斜线

传入:list=['Tom','Jok',"Ja'r're"]
渲染:{{ list.2 | addslashes }}
效果:Ja\'r\'re

capfirst   首字母大写

传入:list=['Tom','Jok',"jarre"]
渲染:{{ list.2 | capfirst }}
效果:Jarre

cut   从字符串中移除指定的字符

传入:list=['Tom','Jok',"jarre"]
渲染:{{ list.2 | cut:'r' }}
效果:jae

date  格式化日期字符串

传入:time = datetime.datetime.now()
渲染:{{ time | date:"Y年m月d日" }}
效果:2019年04月02日传入:time = datetime.datetime.now()
渲染:{{ time | date:"y年m月d日" }}
效果:19年04月02日

default  如果值是False,就替换成设置的默认值,否则就是用本来的值

传入:sex = False #女
渲染:{{ sex | default:"女" }}
效果:女传入:value5=[]
渲染:{{ value5|default:'空的' }}
效果:空的

default_if_none  如果值是None,就替换成设置的默认值,否则就使用本来的值

传入:value = None
渲染:{{ value | default_if_none:"空" }}
效果:空

safe  传递含有html标签的时候,安全渲染

传入:a = "<a href='www.baidu.com'>click</a>"
渲染:<h1>{{ a }}</h1>
效果:<a href='www.baidu.com'>click</a>  而不是我们希望的可点击链接

加入管道safe后

渲染:<h1>{{ a | safe }}</h1>
结果:click 可点击的链接另一种解决方法:
渲染:
{% autoescape off %}{{ a }}
{% endautoescape %}结果:click  可点击的链接

其实,不光是a标签,一起的标签也是同理。

striptags  去标签

传入:a = "<a href='www.baidu.com'>click</a>"
渲染:<h1>{{ a | striptags  }}</h1>
结果:click   看源码:就只是<h1>click</h1>

urlencode   url编码

传入:a = "http://www.baidu.com"
渲染:<h1>{{ a | urlencode   }}</h1>
结果:http%3A//www.baidu.com

参考:http://www.cnblogs.com/yuanchenqi/articles/6083427.html

参考:https://www.cnblogs.com/gregoryli/p/7699352.html


作者:无涯明月

上篇:4. Django 视图函数

下篇:

5. Django templates模板 (一)相关推荐

  1. django html过滤,django templates模板过滤器过滤掉字符串含有的html标签

    django templates模板过滤器过滤掉字符串含有的html标签 在template用法:{{ myvar|striptags }} 如果myvar的字符串是"吾爱孟夫子,风流天下闻 ...

  2. python后台架构Django教程——templates模板

    全栈工程师开发手册 (作者:栾鹏) 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng825485697/articl ...

  3. Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序

    Django学习系列之五:Django 的模板的render替换render_to_string用法及templates模板查找路径顺序 1.Django 的模板的render替换render_to_ ...

  4. django的模板系统

    django的模板系统 设置模板路径 在manager.py的同级目录下新建一个templates的文件夹 在项目根目录下的setting里面的TEMPLATES变量里面加上 :   'DIRS': ...

  5. 04 Django之模板系统

    一.语法 关于模板渲染只需要记住两种特殊符号(语法): {{ }} 和 {% %}  (变量相关用{{ }}  逻辑相关用{% %}) 二.变量 在Django的模板语言中按照{{ 变量名 }}来使用 ...

  6. Django templates 和 urls 拆分

    如果在Django项目 下面新建了blog和polls两个APP应用,在每个APP下面都各自新建自己的url和templates,那么我们需要如何进行项目配置呢? INSTALLED_APPS = [ ...

  7. Python测试开发django5.templates模板变量传参

    上一篇,我们学习了Python测试开发django4.templates模板配置 templates模板中html文件是一个静态页面,写四的,如果有时我们想动态的传入一些不同的参数,想实现在一个固定的 ...

  8. Python测试开发django4.templates模板配置

    [上一篇]我们讲了Python测试开发django3.视图和URL配置 今天详细介绍下 Django 模板的应用,模板是一个文本,用于分离文档的表现形式和内容. 我们已经知道创建项目用django-a ...

  9. Django 使用模板页面,块标签,模型

    1.Django 使用模板页面 Django对于成体系的页面提出了模板继承和模板加载的方式. 1.导入静态页面 2.导入静态文件(css,js,images) 3.修改页面当中的静态地址 1.sett ...

最新文章

  1. Geo-CNN的三维点云
  2. 如何创建修改分区表和如何查看分区表
  3. web工程中的各种路径(eclipse开发)
  4. (操作系统实验)第四次说明
  5. Angular运行在java_在本地运行现有Angular项目
  6. 日常问题——阿里云服务器ssh经常一段时间就断掉解决办法
  7. [ES6] 细化ES6之 -- 数组的扩展
  8. php 多维数组 列,总结PHP实现提取多维数组指定一列的方法
  9. 提高xshell使用效率
  10. Session 工作原理
  11. kali linux 安装驱动安装教程,kali linux安装NVIDA显卡驱动教程
  12. 电脑训练数字键的测试软件,数字按键练习工具
  13. 高通WCNSS驱动简析
  14. c语言结构体的流程图怎么画,结构流程图不会画?手把手教你学会!
  15. PHP 中的 use function是什么意思
  16. macos系统镜像iso_我们一起来安装----虚拟机安装macOS
  17. js判断字符串字符数(汉字算两个)
  18. 瑞科生物港交所上市:市值121亿港元 9个月期内亏损5.2亿
  19. 网络安全——DDOS攻击
  20. 淘宝客导购产品设计(二)

热门文章

  1. 树莓派3b+和 intel movidius 神经元计算棒2代 跑yolo v3 tiny
  2. 5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐
  3. 做外贸必备的十大网站
  4. python求一元二次方程的解
  5. element table 左对齐
  6. Ubuntu 修复弹出U盘“An operation is pending”
  7. 群论基础速成(6):五大著名群族
  8. 计算机显卡设置方法,显卡在哪里设置 显卡设置方法【详细介绍】
  9. MATLAB 设置坐标轴的字体为斜体
  10. 优酷上的cocos2d-x的演示视频