Flask的jinja2模板中自定义过滤器的使用

来源:互联网 发布:bestgore知乎 编辑:程序博客网 时间:2024/05/20 07:17

大部分的模板引擎都是支持过滤器功能的,jinja2也不例外,它提供了丰富的内置过滤器,但是有些时候还是没办法满足我们的需求,好在jinja2支持自定义过滤器,下面是一个简单的例子。

下面的例子完成了自定义过滤器,包括过滤器有一个参数和多个参数的使用

test.py

# -*- coding:utf-8 -*-__author__ = 'guoqianqian'from flask import Flaskfrom flask_script import Managerfrom flask import render_templateapp = Flask(__name__)manager = Manager(app)def mylen(arg):#实现一个可以求长度的函数    return len(arg)# 该函数实现给定一个区间返回区间的内容def interval(test_str, start, end):#过滤器中传递多个参数,第一个参数为被过滤的内容,第二第三个参数需要自己传入    return test_str[int(start):int(end)]env = app.jinja_envenv.filters['mylen'] = mylen#注册自定义过滤器env.filters['interval'] = interval#注册自定义过滤器@app.route("/")def index():    test_str = "hello"    return render_template("index.html", test_str=test_str)if __name__ == "__main__":    manager.run()

index.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>jinjia2模板测试</title></head><body>    <h1>len: {{test_str|mylen}}</h1>    <h1>interval: {{test_str|interval(0,2)}}</h1></body></html>

结果

len: 5interval: he
原创粉丝点击