前言

templates 模板里面过滤器 filter 的作用是对变量的出来,比如小写转大写,替换一些特殊字符,对列表取值,排序等操作。

内置的过滤器有很多,本篇拿几个常用的过滤器做案例讲解下相关的功能。

default

default 的功能是当 value 的值为为布尔值 False 的时候,输出过滤器自定义的值,语法

{{ value | default:"nothing" }}

视图函数 context 内容

# 上海悠悠,QQ交流群:750815713

def personalView(request):
context = {
"hello": "hello world!",
"name": "上海-悠悠",
"html": "<h2>这是一段html标签</h2>",
"n_name": "",
"age": 20,
"fancy": ["python", "django", "pytest"],
"blog": {
"url": "https://www.cnblogs.com/yoyoketang/",
"img": "https://pic.cnblogs.com/avatar/1070438/20161126151035.png"
}
}
return render(request, "personal.html", context=context)

personal.html 模板的部分内容

<div>
<p class="text_gray"><span>姓名: </span>{{ n_name | default:"yoyo" }}</p>
</div>

n_name 的值为空,所以在页面上回显示默认值 yoyo

add

add 的功能是将 value 的值加一个值,比如把age的值加8

{{ value | add:"8" }}

personal.html 模板的部分内容

<div>
<p class="text_gray"><span>年龄:</span>{{ age | add:"8" }}</p>
</div>

first、last、join

first 是输出列表中第一个,last 是输出列表中最后一个值,join是连接列表的值

{{ value | first }}
{{ value | last }}
{{ value | join:"arg" }}

personal.html 模板的部分内容

    <p class="text_gray"><span>感兴趣的技术first:</span>{{ fancy | first }}</p>
<p class="text_gray"><span>感兴趣的技术last:</span>{{ fancy | last }}</p>
<p class="text_gray"><span>感兴趣的技术join:</span>{{ fancy | join:" | " }}</p>

safe

safe 关闭html转义,告诉Django,这段代码是安全的,不用转义

{{ value | safe }}

personal.html 模板的部分内容

    <p class="text_gray"><span>html标签:</span>{{ html }}</p>
<p class="text_gray"><span>html标签:</span>{{ html | safe}}</p>

显示效果

personal.html 模板的部分内容

# 上海悠悠,QQ交流群:750815713
<div>
<p class="text_gray"><span>姓名: </span>{{ n_name | default:"yoyo" }}</p>
<p class="text_gray"><span>年龄:</span>{{ age | add:"8" }}</p>
<p class="text_gray"><span>感兴趣的技术first:</span>{{ fancy | first }}</p>
<p class="text_gray"><span>感兴趣的技术last:</span>{{ fancy | last }}</p>
<p class="text_gray"><span>感兴趣的技术join:</span>{{ fancy | join:" | " }}</p>
<p class="text_gray"><span>html标签:</span>{{ html }}</p>
<p class="text_gray"><span>html标签:</span>{{ html | safe}}</p>
</div>

页面显示

除了上面的这些过滤器,还有很多内置过滤器,如果内置过滤器不能满足你的需求,也可以自己写一个过滤器!

python测试开发django-69.templates模板过滤器filter的更多相关文章

  1. python测试开发django-36.一对一(OneToOneField)关系查询

    前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...

  2. python测试开发django-16.JsonResponse返回中文编码问题

    前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...

  3. python测试开发django-15.查询结果转json(serializers)

    前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...

  4. 2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...

  5. python测试开发django-rest-framework-63.基于函数的视图(@api_view())

    前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...

  6. Python测试开发-创建模态框及保存数据

    Python测试开发-创建模态框及保存数据 原创: fin  测试开发社区  前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎 ...

  7. 《Python测试开发技术栈—巴哥职场进化记》—前言

    写在前面 今年从4月份开始写一本讲Python测试开发技术栈的书,主要有两个目的,第一是将自己掌握的一些内容分享给大家,第二是希望自己能系统的梳理和学习Python相关的技术栈.当时我本来打算以故事体 ...

  8. python测试开发django-197.django-celery-beat 定时任务

    前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...

  9. python测试开发django-41.crispy-forms设计标签式导航菜单(TabHolder)

    前言 xadmin的详情页面主要是用form_layout布局,学会了完全可以不用写html代码,也能做出很好看的页面. xadmin的html页面是用的Bootstrap3框架设计的,layout布 ...

随机推荐

  1. [LeetCode] 919. Complete Binary Tree Inserter 完全二叉树插入器

    A complete binary tree is a binary tree in which every level, except possibly the last, is completel ...

  2. pytorch的state_dict()拷贝问题

    先说结论,model.state_dict()是浅拷贝,返回的参数仍然会随着网络的训练而变化.应该使用deepcopy(model.state_dict()),或将参数及时序列化到硬盘. 再讲故事,前 ...

  3. idea找不到tomcat,找不到Tomcat server

    打开settings  添加即可 如果再没有,可能需要先安装timcat插件

  4. 为什么我的resharper控件安装之后没有显示

    Resharper和Resharper C++有时候会出现,安装之后不显示,VisualStudio菜单栏内找不到的情况,大多数是因为启动VisualStudio的时候没有激活Resharper. 安 ...

  5. 在ubuntu下安装openjdk

    OpenJDK是JDK的开放源码版本,以GPL(General Public License,通用性公开许可证)协议的形式放出.因为授权协议的原因,Sun公司实现的JDK的一部分源码因为产权的问题无法 ...

  6. Mysql插入text类型字段错误记录 com.mysql.jdbc.MysqlDataTruncation: Data truncation: #22001

    一次插入操作报如下错误 com.mysql.jdbc.MysqlDataTruncation: Data truncation: #22001 是说字段值长度超过限制. MySQL TEXT数据类型的 ...

  7. C# 分解文件路径目录

    利用正则表达式分解文件目录 [^\\].*?[\\$]|[^\\].*?\.\w+|\w+ 测试字符串:C:\Users\wppcn\Desktop\中文长字符第一次测试\新建文件夹1\新建文件夹2\ ...

  8. 练手WPF(一)——模拟时钟与数字时钟的制作(上)

    一.Visual Studio创建一个WPF项目. 简单调整一下MainWindow.xaml文件.主要使用了两个Canvas控件,分别用于显示模拟和数字时钟,命名为AnalogCanvas.digi ...

  9. Markdown温故知新(4):更多扩展语法及HTML

    1.强调(删除 & 高亮) 2.脚注(注脚) 3.数学公式 4.更多扩展语法 5.终极扩展之内嵌 HTML 5.1.文本修饰类标签 5.2.内容排版类标签 5.3.图片及多媒体标签 5.4.锚 ...

  10. Spring.yml配置文件读取字符串出现错误

    今天遇到一个诡异的问题,在配置文件中配置了一个值为字符串的属性,但是在用@Value注入时发现注入的值不是我配置的值,而且在全文都没有找到匹配的值 之后研究了好久,发现yml文件会把0开头的数组进行8 ...