【django】过滤器和自定义过滤器
一、过滤器语法
语法如下:
- 使⽤管道符号 | 来应⽤过滤器,⽤于进⾏计算、转换操作,可以使⽤在变量、标签中。
- 如果过滤器需要参数,则使⽤冒号:传递参数。
- 变量 | 过滤器:参数
列举⼏个如下:
- 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】过滤器和自定义过滤器相关推荐
- Django 框架13: 自定义过滤器和标签
2019独角兽企业重金招聘Python工程师标准>>> Django的模板系统自带了一系列的内建标签和过滤器,一般情况下可以满足开发要求,如果觉得需更精准的模板标签或者过滤器,可以自 ...
- Flask框架(flask模板(jinja2)与字符串过滤器、列表过滤器以及自定义过滤器)
模板变量 : {{name}} 1. 模板的定义: 模板变量 : {{name}} 2. 模板的渲染: render_template("模板名字",键=值,键=值) ...
- php自定义能过滤器,过滤器与自定义过滤器的介绍
angularjs中的过滤器为了实现对于表达式结果的筛选.过滤.格式化,达到更好的表现效果. 过滤器的语法:支持多重过滤和传参 {{expression | 过滤器名称 : '参数' | 过滤器名称2 ...
- Python Django模板页面自定义过滤器实现md语法及字符串切割代码示例
- python文件路径过滤器_自定义过滤器及标签
代码布局(自定义的代码,放在哪里) 1,某个app特有的 --app目标下,templateags 文件夹 --再到ttemplateags 文件夹下创建python模块(py文件) 2,定义复用 - ...
- vue 数字变星号 过滤器_Vue自定义过滤器格式化数字三位加一逗号
{{num | NumFormat}}元 data(){ return { num: 876543.00 } }, filters: { NumFormat: function (value) { i ...
- 20190325 Django自定义过滤器和自定义模板标签
代码布局(死去活来) 自定义要先解决几个问题: 1). 在哪里定义,要将代码写在哪里? app目录下的名为templatetags的文件夹,必须叫这个名字.这个文件夹必须是一个python的包(pyt ...
- Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
阅读目录 一.模板语法: 二.过滤器:(Filters) 三.模板的继承与模板的导入 摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模 ...
- 16.引言篇——自定义过滤器及标签
引言--在前面讲述了如何使用Django内置的过滤器,这在我们进行某些项目开发时很是方便.但是,内置的过滤器毕竟有限(当内置的满足不了我们的需求该怎么办?),但是规则是死的,人是活的.这就引出了接下来 ...
最新文章
- 2020年AI产业报告:100个岗位抢1个人,计算机视觉成最大缺口
- FileLocatorPro正则表达式批量搜索文件中的字符串
- 技术系列课|AI驱动的超分辨技术应用现状
- QQ号码采集及邮件发送系统2009
- 为什么一直没有意识到自己还是面向过程编程
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第4篇] P类复杂问题
- MagicRecord For IOS API深层解析
- 李楠评华为Mate X/小米MIX Alpha:适合土豪做非主力手机用
- 未来互联网最稀缺的能力是什么?
- modbus地址扫描_西门子PLC通信编程MODBUS通信举例
- 高等代数——大学高等代数课程创新教材(丘维声)——1.3笔记+习题
- windows无法打开添加打印机_打印机常见故障机及处理方法
- Python爬虫之七:爬虫实战-爬取豆瓣电影 top 250
- win10远程连接ubuntu18.4
- 冶金、水泥、化工行业自动化通信产品介绍
- wpf 动态设置textblock的字体颜色
- python中break怎么用_详解Python中break语句的用法
- android开机动画不播放,android 设置activity启动退出动画 | 解决设置activity 动画不生效问题...
- android 高德地图 删除多边形,高德地图多边形覆盖物添加、获取、删除
- Calculate a+b
热门文章
- Android获取GPS网络定位经纬度信息
- android网络 gps定位失败,android 网络定位失败 location为null的真正原因
- Servlet过滤器概念特点等详谈
- 打开共享计算机很慢,局域网中,查看一台电脑的共享文件夹,打开很慢(电脑达人进)...
- 局域网共享技术及网络故障检测排除
- 【2020年领域新星】 赵彦鹏 爱丁堡大学
- 深入Java Servlets网络编程 西安电子科技大学出版社
- 个人独立博客,如何做网站内部优化?
- linux终端下打开pdf文件
- 耶鲁大学 博弈论(Game Theory) 笔记4-足球比赛与商业合作之最佳对策