使用 Jinja2 的 Python 项目攻略如下:
安装 Jinja2
通过 pip 安装:
pip install Jinja2
导入 Jinja2
from jinja2 import Environment, FileSystemLoader
配置模板环境
env = Environment(loader=FileSystemLoader('templates'))
这里指定了模板文件的目录为 templates
。
准备模板
在指定的模板文件目录中创建模板文件,例如 index.html
。
模板文件中可以插入变量、表达式、循环等 Jinja2 的特殊语法。
例如,插入变量:
<h1>{{ title }}</h1>
渲染模板
template = env.get_template('index.html')
output = template.render(title='Welcome to my site')
这里传入了一个变量 title
,变量值为 'Welcome to my site'
。
调用 render()
方法,将指定的变量值插入模板中,生成最终的渲染结果。
示例1: 使用 Jinja2 渲染 Flask 网页
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', title='Homepage')
if __name__ == '__main__':
app.run()
这里是使用 Flask 框架实现的一个简单的应用,将 Jinja2 用于渲染网页。
定义了一个路由 /
,在访问该路由时,将调用 index()
函数。
index()
函数使用 render_template()
方法调用 Jinja2 渲染模板。
在这个示例中,模板文件 index.html
可以写成:
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Welcome to my site</h1>
<p>This is the homepage.</p>
</body>
</html>
- Flask 应用启动后,访问
http://localhost:5000
页面,将看到页面标题为 Homepage,页面内容为欢迎语句和提示。
示例2: 动态生成 API 文档
import json
data = [
{
'name': 'foo',
'description': 'This is foo',
'parameters': [
{
'name': 'bar',
'type': 'string',
'description': 'This is bar'
},
{
'name': 'baz',
'type': 'int',
'description': 'This is baz'
}
]
},
{
'name': 'qux',
'description': 'This is qux',
'parameters': [
{
'name': 'quux',
'type': 'float',
'description': 'This is quux'
}
]
}
]
env = Environment(loader=FileSystemLoader('templates'))
template = env.get_template('api.html')
output = template.render(data=data)
with open('api.html', 'w') as f:
f.write(output)
这里是一个示例,将 Jinja2 用于生成 API 文档。
定义了一个列表 data
,其中包含了两个字典,每个字典表示一个 API 接口。
调用 render()
方法时,将列表 data
作为参数传入,插入模板中。
在这个示例中,模板文件 api.html
可以写成:
<!doctype html>
<html>
<head>
<title>API Documentation</title>
</head>
<body>
{% for api in data %}
<h1>{{ api.name }}</h1>
<p>{{ api.description }}</p>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
{% for param in api.parameters %}
<tr>
<td>{{ param.name }}</td>
<td>{{ param.type }}</td>
<td>{{ param.description }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endfor %}
</body>
</html>
- 生成的
api.html
文件中,将显示出每个 API 接口的名称、描述和参数列表。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python jinjia2的项目使用 - Python技术站