Flask的jinja2模板中自定義過濾器的使用

大部分的模板引擎都是支持過濾器功能的,jinja2也不例外,它提供了豐富的內置過濾器,可是有些時候仍是沒辦法知足咱們的需求,好在jinja2支持自定義過濾器,下面是一個簡單的例子。html

下面的例子完成了自定義過濾器,包括過濾器有一個參數和多個參數的使用flask

test.py
# -*- coding:utf-8 -*-
__author__ = 'guoqianqian'app

from flask import Flask
from flask_script import Manager
from flask import render_template函數

app = Flask(__name__)
manager = Manager(app)測試

def mylen(arg):#實現一個能夠求長度的函數
return len(arg).net

# 該函數實現給定一個區間返回區間的內容
def interval(test_str, start, end):#過濾器中傳遞多個參數,第一個參數爲被過濾的內容,第二第三個參數須要本身傳入
return test_str[int(start):int(end)]htm

env = app.jinja_env
env.filters['mylen'] = mylen#註冊自定義過濾器
env.filters['interval'] = interval#註冊自定義過濾器blog

@app.route("/")
def index():
test_str = "hello"
return render_template("index.html", test_str=test_str)模板引擎

if __name__ == "__main__":
manager.run()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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>ip

</body></html>123456789101112結果len: 5

相關文章
相關標籤/搜索