一、过滤器语法

语法如下:

  • 使⽤管道符号 | 来应⽤过滤器,⽤于进⾏计算、转换操作,可以使⽤在变量、标签中。
  • 如果过滤器需要参数,则使⽤冒号:传递参数。
  • 变量 | 过滤器:参数

列举⼏个如下:

  • safe,禁⽤转义,告诉模板这个变量是安全的,可以解释执⾏
  • length,⻓度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
  • default,默认值,如果变量不存在时则返回默认值。
  • data | default:‘默认值’。
  • date,⽇期,⽤于对⽇期类型的值进⾏字符串格式化。

常⽤的格式化字符如下:

  • Y表示年,格式为4位,y表示两位的年。
  • m表示⽉,格式为01,02,12等。
  • d表示⽇, 格式为01,02等。
  • j表示⽇,格式为1,2等。
  • H表示时,24进制,h表示12进制的时。
  • i表示分,为0-59。
  • s表示秒,为0-59。
  • value | date:“Y年m⽉j⽇ H时i分s秒”

二.常⻅形式

使⽤形式为:{{ value | add: “2”}}:意义:将value的值增加2
使⽤形式为:{{ value | capfirst }} :意义:value的第⼀个字符转化成⼤写形式
使⽤形式为:
(a) {{ value | date:“Y-m-d h:i:s” }}
例如:如果value是⼀个datetime对象
(datetime.datetime.now()) 那么输出将是字符串"Wed 09 Jan 2008"
(b) {{ value | date }},这种形式没有格式化字符串,这时候,格式化字符串会⾃动采⽤DATE_FORMAT所设置的形式。
意义:将⽇期格式数据按照给定的格式输出

使⽤形式:{{ value | default: “nothing” }},例如,如果value是"",那么输出将是nothing
意义:如果value的意义是False,那么输出使⽤缺省值

使⽤形式:{{ value | divisibleby:arg}},如果value是21,arg是3,那么输出将是True
意义:如果value能够被arg整除,那么返回值将是True

使⽤形式:{{ value | first }}
意义:返回列表中的第⼀个Item,
例如,如果value是列表[‘a’,‘b’,‘c’],那么输出将是’a’。

使⽤形式:{{value | safe}} :进⾏HTML标签转换
意义:当系统设置autoescaping打开的时候,该过滤器使得输出不进⾏escape转换

使⽤形式:{{value | slugify}}
意义:将value转换成⼩写形式,同时删除所有分单词字符,并将空格变成横线
例如:如果value是how are you,那么输出将是how-are-you

使⽤形式:{{value | truncatewords:2}}
意义:将value切成truncatewords指定的单词数⽬
例如:如果value是how are you 那么输出将是:how are …

视图类

from django.views import View
from django.template import loaderclass UserView(View):def put(self,request):content = {'clist':[1,2,3,4,5],'h1tag':'<h1>tag</h1>','pub_date': datetime.strptime('2022-4-17', '%Y-%m-%d').date(),'value':22}return render(request, 'film/index1.html', content)

模板文件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>{% for cnum in clist %}{{ cnum | add:'10' }}{% endfor %}<br>{{ h1tag | safe }}{{ pub_date | date:'Y-m-d' }}{{ value | divisibleby:3 }}{{ clist | first }}
</body>
</html>

响应结果:

三、自定义过滤器

实现步骤

1、在子应用下创建python package命名为templatetag(固定的)
2、在templatetag下创建python文件,命名myfilter.py(随意设置的)
3、myfilter文件中增加过滤器逻辑处理函数
4、模板页面顶部加载myfilter文件,{% load filter %}
5、在模板页面应用自定义过滤器

举例:
myfilter.py文件

from django.template.defaultfilters import register
import markdown@register.filter(is_safe=False)
def add_arg(value, arg):"""Add the arg to the value."""try:return int(value) + int(arg)except (ValueError, TypeError):try:return value + argexcept Exception:return ''@register.filter(is_safe=False)
def markdown_data(value):"""markdown解析文本:param value::return:"""return markdown.markdown(value)

视图类

class UserView(View):def put(self,request):content = {'clist':[1,2,3,4,5],'h1tag':'<h1>tag</h1>','pub_date': datetime.strptime('2022-4-17', '%Y-%m-%d').date(),'value':22,'mtag':'## 文集'}return render(request, 'film/index1.html', content)

模板文件

{% load myfilter %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>{% for cnum in clist %}{{ cnum | add_arg:'20' }}{% endfor %}{{ mtag | markdown_data | safe }}</body>
</html>

响应结果:

【django】过滤器和自定义过滤器相关推荐

  1. Django 框架13: 自定义过滤器和标签

    2019独角兽企业重金招聘Python工程师标准>>> Django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足开发要求,如果觉得需更精准的模板标签或者过滤器,可以自 ...

  2. Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)

    模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染:  render_template("模板名字",键=值,键=值)       ...

  3. php自定义能过滤器,过滤器与自定义过滤器的介绍

    angularjs中的过滤器为了实现对于表达式结果的筛选.过滤.格式化,达到更好的表现效果. 过滤器的语法:支持多重过滤和传参 {{expression | 过滤器名称 : '参数' | 过滤器名称2 ...

  4. Python Django模板页面自定义过滤器实现md语法及字符串切割代码示例

  5. python文件路径过滤器_自定义过滤器及标签

    代码布局(自定义的代码,放在哪里) 1,某个app特有的 --app目标下,templateags 文件夹 --再到ttemplateags 文件夹下创建python模块(py文件) 2,定义复用 - ...

  6. vue 数字变星号 过滤器_Vue自定义过滤器格式化数字三位加一逗号

    {{num | NumFormat}}元 data(){ return { num: 876543.00 } }, filters: { NumFormat: function (value) { i ...

  7. 20190325 Django自定义过滤器和自定义模板标签

    代码布局(死去活来) 自定义要先解决几个问题: 1). 在哪里定义,要将代码写在哪里? app目录下的名为templatetags的文件夹,必须叫这个名字.这个文件夹必须是一个python的包(pyt ...

  8. Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)

    阅读目录 一.模板语法: 二.过滤器:(Filters) 三.模板的继承与模板的导入 摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模 ...

  9. 16.引言篇——自定义过滤器及标签

    引言--在前面讲述了如何使用Django内置的过滤器,这在我们进行某些项目开发时很是方便.但是,内置的过滤器毕竟有限(当内置的满足不了我们的需求该怎么办?),但是规则是死的,人是活的.这就引出了接下来 ...

最新文章

  1. 2020年AI产业报告:100个岗位抢1个人,计算机视觉成最大缺口
  2. FileLocatorPro正则表达式批量搜索文件中的字符串
  3. 技术系列课|AI驱动的超分辨技术应用现状
  4. QQ号码采集及邮件发送系统2009
  5. 为什么一直没有意识到自己还是面向过程编程
  6. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第4篇] P类复杂问题
  7. MagicRecord For IOS API深层解析
  8. 李楠评华为Mate X/小米MIX Alpha:适合土豪做非主力手机用
  9. 未来互联网最稀缺的能力是什么?
  10. modbus地址扫描_西门子PLC通信编程MODBUS通信举例
  11. 高等代数——大学高等代数课程创新教材(丘维声)——1.3笔记+习题
  12. windows无法打开添加打印机_打印机常见故障机及处理方法
  13. Python爬虫之七:爬虫实战-爬取豆瓣电影 top 250
  14. win10远程连接ubuntu18.4
  15. 冶金、水泥、化工行业自动化通信产品介绍
  16. wpf 动态设置textblock的字体颜色
  17. python中break怎么用_详解Python中break语句的用法
  18. android开机动画不播放,android 设置activity启动退出动画 | 解决设置activity 动画不生效问题...
  19. android 高德地图 删除多边形,高德地图多边形覆盖物添加、获取、删除
  20. Calculate a+b

热门文章

  1. Android获取GPS网络定位经纬度信息
  2. android网络 gps定位失败,android 网络定位失败 location为null的真正原因
  3. Servlet过滤器概念特点等详谈
  4. 打开共享计算机很慢,局域网中,查看一台电脑的共享文件夹,打开很慢(电脑达人进)...
  5. 局域网共享技术及网络故障检测排除
  6. 【2020年领域新星】 赵彦鹏 爱丁堡大学
  7. 深入Java Servlets网络编程 西安电子科技大学出版社
  8. 个人独立博客,如何做网站内部优化?
  9. linux终端下打开pdf文件
  10. 耶鲁大学 博弈论(Game Theory) 笔记4-足球比赛与商业合作之最佳对策