jinja2定义
一个非常强大的模板引擎,常用于 Python 的 Web 开发中。它允许你将 HTML、XML 或其他文本格式与动态数据结合起来,来生成动态内容。
jinja2模板包含变量,表达式,标签。变量和表达式在模板求值的时候会被替换为值,标签可以控制模板的逻辑。模板语法来源与Django和python。
jinja2的语法
语句:{%…%}
变量:{{…}}
注释:{#…#}
jinja2的使用例子
from jinja2 import Template,Environment, FileSystemLoader
#1.简单例子
temp = Template('Hello {{ name }}!')
print(temp.render(name='John'))
#2.渲染文件
#创建一个指向当前目录的文件系统加载器
loader = FileSystemLoader('./')
env = Environment(loader=loader)
temp2 = env.get_template('jinja2.j2')
result2 = temp2.render(name='John')
print(result2)
#3.for的使用 列表
temp3 = Template('''
{% for name in a-%}
hello {{name}}
{% endfor %}
''')
names = ['John','Peter']
result3 = temp3.render(a=names)
print(result3)
#4.for的使用,列表里面的字典
temp4 = Template('''
{% for dict in list -%}
my name is {{dict.name}},age is {{dict.age}}
{% endfor%}''')
list = [
{'name':"John","age":25},
{'name':"Peter","age":23},
{'name':"Apple","age":15}
]
result4 = temp4.render(list=list)
print(result4)
#5.if的使用
temp5 = Template(
'''
{% for dict in list -%}
{% if dict.age > 18 -%}
myname is {{dict.name}},age is {{dict.age}}
{%- endif %}
{% endfor %}
'''
)
result5 = temp5.render(list=list)
print(result5)
#6.filter的使用
#6.1 内置的过滤器,通过过滤器,对变量进行修改,
#low,upper,title,trim,join,replace,round,int
temp6 = Template(
'''
{% for dict in list -%}
{% if dict.age > 18 -%}
myname is {{dict.name | upper}},age is {{dict.age}}
{%- endif %}
{% endfor %}
'''
)
result6 = temp6.render(list=list)
print(result6)
#6.2 自定义过滤器
from jinja2 import Environment, Template
def my_filter(s):
return s.replace(' ','-')
env = Environment()
# 注册过滤器
env.filters['my_filter'] = my_filter
temp7 = env.from_string("{{ 'Hello World' | my_filter }}")
result7 = temp7.render()
print(result7)