玩转Python模板神器 - Jinja2从入门到实战
大家好,我是翔宇风!今天要给大家介绍一个非常实用的Python库 - Jinja2。作为一名Python开发者,如果你想要生成HTML页面、配置文件或者其他文本内容,Jinja2绝对是你的得力助手!
Jinja2是什么?
Jinja2是Python中最流行的模板引擎之一,它可以让我们在预定义的模板中插入变量、条件判断和循环等语法,从而动态生成文本内容。Flask框架就是用Jinja2作为默认的模板引擎。快速上手
需要安装Jinja2:pip install jinja2
来看一个最简单的例子:
from jinja2 import Template
# 创建模板
template = Template('Hello {{ name }}!')
# 渲染模板
result = template.render(name='小明')
print(result) # 输出: Hello 小明!
模板语法大揭秘
变量
在模板中使用 {{ }} 来表示变量:
from jinja2 import Template
template = Template('我是{{ name }},今年{{ age }}岁')
result = template.render(name='小明', age=18)
print(result) # 输出: 我是小明,今年18岁
控制结构
Jinja2支持if判断和for循环:
template_str = '''
{% for student in students %}
{% if student.score >= 90 %}
{{ student.name }}是学霸!
{% else %}
{{ student.name }}要继续加油!
{% endif %}
{% endfor %}
'''
template = Template(template_str)
students = [
{'name': '小明', 'score': 95},
{'name': '小红', 'score': 85}
]
print(template.render(students=students))
小贴士:Jinja2的语法很像Python,但是要注意控制语句需要用{% %}包裹,并且要有对应的end语句。
过滤器
Jinja2提供了很多内置的过滤器,可以对变量进行处理:
template = Template('{{ name|upper }}') # 转换为大写
print(template.render(name='python')) # 输出: PYTHON
实战小练习
试试看用Jinja2生成一个简单的HTML页面:
template_str = '''
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>{{ title }}</h1>
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
</body>
</html>
'''
template = Template(template_str)
context = {
'title': '我的购物清单',
'items': ['苹果', '香蕉', '橙子']
}
html = template.render(context)
Jinja2真的是一个超级强大的模板引擎!我们今天学习了:
基本的变量插入
控制结构(if/for)
过滤器的使用
模板的渲染过程
建议大家在实际项目中多加练习,特别是在做Web开发时,Jinja2绝对能帮你事半功倍!
下次见!记得点赞关注!😊