11_自定义flask_jinja2模板过滤器

自定义过滤器

自定义的过滤器如果和内置的过滤器重名,会覆盖内置的过滤器

过滤器本质上就是一个函数。如果在模板中调用这个过滤器。那么就会将这个变量的值作为第一个参数传递给过滤器这个函数,然后函数的返回值会作为这个过滤器的返回值。

1. 通过add_template_filter(过滤器函数名, 模板中使用的过滤器名字)

...
def filter_double_sort(li):
    """自定义的过滤器函数"""
    return li[::2]    # 如将列表第隔两步取一个数
app.add_template_filter(filter_double_sort, 'li2')
...

2. 通过装饰器: @app.template_filter(‘过滤器名称‘)

app.config['TEMPLATES_AUTO_RELOAD'] = True   # 可以设置这个, 模板修改了,也自动加载

@app.template_filter('li3')
def filter_double_sort(li):
    """每隔三步取一个值"""
    return li[::3]

@app.template_filter('cut')
def cut(value):
    """替换字符串中hello为空"""
    value = value.replace('hello', '')
    return value

# 在模板中使用
<p>cut 替换掉里面的hello:{{ 'hello world hello world replace hello replace value world'|cut }}</p>
# 结果为:
cut 替换掉里面的hello:world world replace replace value world

原文地址:https://www.cnblogs.com/nichengshishaonian/p/11631713.html

时间: 2024-08-30 18:08:19

11_自定义flask_jinja2模板过滤器的相关文章

django 第五课自定义模板过滤器与标签

代码布局:(自定义的代码放在哪里) 某个app特有的 app目录下,templatetags文件夹需要放 __init__.py 在到templetags文件夹下创建python模块(py文件) 定义复用 创建要给新的app,将他们定义在新的app中,在INSTALL_APPS 注册,然后可以应用 自定义模板过滤器 模板过滤器是什么? 函数,一个或两个参数 第一个参数是传递进来的模板变量 第二个参数,普通的参数,也可以是默认也可以不要其实就是个函数,没有什么不同在app目录teacher下创建t

django模板&amp;过滤器

django模板&过滤器 声明:部分信息来源这篇博客https://www.cnblogs.com/maple-shaw/articles/9333821.html MVC: 模型(model)-------->模型 视图(view)----->html 控制器(controller)--------->业务逻辑 Django框架的设计模式借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性. Django框架的不同之处在于它拆分的三部分为:Model(模型).Te

android自定义UI模板图文详解

不知道大家在实际开发中有没有自定义过UI模板?今天花时间研究了一下android中自定义UI模板,与大家分享一下. 每个设计良好的App都是自定义标题栏,在自定义标题栏的过程中大部分人可能都是自定义一个标题的xml文件,然后在需要的地方直接通过include来引用,这比起在每个布局文件中写标题栏已经进化很多了,但仍然不是最简单有效的方法,我们为什么不能自定义一个标题控件呢?今天就带大家自己做一个标题栏控件.效果图如下: 开始啦: 第一步:自定义xml属性 新建一个android项目,在value

自定义 Yasnippet 模板

yasnippet可以把我们常用的代码段或文本储存起来,到使用的时候只需键入几个字母就会自动带出. 比如我们在写python代码时,常常会在文件的第一行写下: #!/usr/bin/env python,经常这么手工键入是不是很没有效率,用yasnippet来帮你! 方法: 一.新建snippet 使用命令 M-x yas-new-snippet 打开一个新buffer,或者直接新建一个文件,输入内容后保存到你指定的位置即可. 用M-x yas-new-snippet 打开的buffer内容默认

MyEclipse自定义servlet模板

每次用MyEclipse默认的servlet的模板创建servlet的时候,里面会生成好多没有用的代码.因此,我们可以自定义servlet模板.步骤如下: 找到com.genuitec.eclipse.wizards_11.5.0.me201310291746.jar 文件,该文件在MyEclipse(本人安装的是MyEclipse Professional 2014)安装目录下的/plugins下 打开com.genuitec.eclipse.wizards_11.5.0.me20131029

前端编辑器-自定义html模板

1.webstorm 自定义html模板 我们需要找到设置创建模板的地方,步骤如下: File  ->  settings ->  Editor  ->  File and Code Templates 找到这个位置,我们就会看见这个界面,在导航栏的右侧部分的左上角有个+号我们就可以开始创建模板了, 如上图所示,Name所对应的地方是用来写HTML模板的名字, 这会方便我们选择的是哪一个模板, Extension是我们我们的模板是什么类型的文档,此地理所应当是填html, 空白区域是放h

Android Studio自定义注释模板

博主是从Eclipse转来Android Studio 的,总体来说,Android Studio是比Eclipse优秀和智能许多.但是对于我们这些用习惯了Eclipse的开发者来说,或多或少还是一些不适应的地方.快捷键什么的额.但是,今天我们不是要说快捷键,我们要说一说自定义注释模板.用过Eclipse的开发者应该都喜欢在文件的头部或者其他地方加上一些我们自己的信息,当然,这些信息都是我们自定义编辑进去的.那么,转到Android Studio后,我们还能不能自定义注释模板呢?答案是肯定的.下

Webappbuilder自定义widget模板

Webappbuilder自定义widget模板 by 李远祥 到\\widgets\samplewidgets目录下拷贝 CustomWidgetTemplate 文件并重命名为MyWidget 设置widget的类名.在MyWidget 目录下打开Widget.js ,将baseClass 改为 baseClass: 'jimu-widget-mywidget' 如下图 自定义widget的UI界面.在Widget.html 文件中可以添加其widget的界面.可以尝试将以下代码加入到这个h

ThinkPHP框架配置自定义的模板变量(十)

原文:ThinkPHP框架配置自定义的模板变量(十) 模板替换(手册有详细介绍对应的目录) __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/ __ROOT__: 会替换成当前网站的地址(不含域名) __APP__: 会替换成当前项目的URL地址 (不含域名) __GROUP__:会替换成当前分组的URL地址 (不含域名) __URL__: 会替换成当前模块的URL地址(不含域名) __ACTION__:会替换成当前操作的URL地址 (不含域名) __SELF__: 会