过滤器是通过管道符号(|)进行使用的,例如:{{ name | length }},将返回name的长度。过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中。
常见的过滤器如下所示:
示例代码:
main.py
- from flask import Flask, render_template
-
- app = Flask(__name__)
-
-
- @app.route('/')
- def index():
- content = {
- "names": {"name": 'dgw'},
- "age": 25,
- "sex": '男'
- }
- name_list = ['张三', '李四', '王五', '赵六', '孙七']
- num = -5
- data = {
- "content": content,
- "name_list": name_list,
- "num": num
- }
- return render_template('index.html', **data)
-
-
- if __name__ == '__main__':
- app.run()
index.html
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>首页title>
- head>
- <body>
- 欢迎来到首页!
- <div>
- names:{{ content.names.name }} <br>
- names:{{ content.names['name'] }} <br>
- sex:{{ content.sex }} <br>
- age:{{ content.age }} <br>
-
- {# personal info #}
- div>
- <div>
- <ul>
- {% for name in content.name_list %}
- <li>{{ name }}li>
- {% endfor %}
- ul>
- div>
- <div>
- abs(value)--->:{{ num | abs }} <br>
- default(value)-->:{{ nums | default('666') }} <br>
- name_list-->:{{ name_list }} <br>
- first(value)-->:{{ name_list | first }} <br>
- last(value)-->:{{ name_list | last }} <br>
- format(value,*args,**kwargs)-->{{ "%s - %s" | format(content.names.name, content.names.name) }} <br>
- length(vale)--->:{{ content.names.name | length }}
- float(value)-->:{{ num | float }}
- div>
- body>
- html>
运行结果:

查看Jinja2中更多内置的过滤器,详见官网:Template Designer Documentation — Jinja Documentation (3.0.x)