Jinja2模板引擎使用方法及应用场景全解析
Jinja2是一个基于Python的模板引擎,它可以帮助我们快速构建动态的HTML页面、邮件、XML文件等。
安装Jinja2
我们可以使用pip命令来安装Jinja2:
pip install Jinja2
Jinja2基本语法
我们可以使用{{ }}来显示变量:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>Hello, {{ name }}!</h1>
</body>
</html>
控制结构
Jinja2支持if语句、for循环、宏等控制结构。
if语句:
html
{% if user %}
<h1>Hello, {{ user }}!</h1>
{% else %}
<h1>Hello, Stranger!</h1>
{% endif %}
for循环:
html
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
继承
我们可以使用{% extends %}指令来实现模板的继承:
base.html:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
child.html:
html
{% extends "base.html" %}
{% block title %}
Hello, Jinja2!
{% endblock %}
{% block content %}
<h1>Hello, {{ name }}!</h1>
{% endblock %}
宏
宏是一种重复使用的代码片段。我们可以使用{% macro %}定义宏:
html
{% macro input(name, value='', type='text') -%}
<input type="{{ type }}" name="{{ name }}" value="{{ value }}">
{%- endmacro %}
使用宏:
html
{% from 'macros.html' import input %}
{{ input('username') }}
{{ input('password', type='password') }}
Jinja2应用场景
Jinja2可以用于构建动态的网页、邮件、报表等。它广泛应用于Web框架(如Flask、Django)和静态网站生成器(如Pelican、Jekyll)等地方。Jinja2可以与其他Python库和框架(如Pandas、NumPy、Matplotlib)配合使用,实现更多功能。