在flask或fastapi中,经常会用的JinJa2模板引擎,JinJa2的官网文档:https://jinja.palletsprojects.com/en/stable/ 这里我就以flask开始学习一下JinJa2模板引擎。开始一个flask的代码用例:
main.py文件代码
import json
from flask import Flask, render_template, session, request, redirect, url_for, jsonify
# 实例化一个Flask的应用,定义了模板文件存放的目录在当前文件所在目录下的www/templates/目录下,
app = Flask(__name__, template_folder='www/templates', static_folder='www/static')
app.secret_key = 'lkfjaksldfj'
@app.route('/db_name/<int:page>', methods=["GET"])
def db_name(page):
"""
数据库页面
:return:
"""
item_count = 100
start_num = (page - 1) * item_count
list_name = os.listdir("./Data/Name")
if start_num < start_num:
list_name = list_name[start_num:item_count]
list_name = [x.replace(".json", "") for x in list_name if x.endswith(".json")]
data_dict = {}
i = start_num
for name in list_name:
i = i + 1
arr = name.split("_")
data_dict[i] = {
"name": arr[0],
"xingbie": arr[1],
}
return render_template("db_name.html",
title="数据库页面",
page=page,
data_dict=data_dict)
app.run(host="0.0.0.0", port=5000, debug=True)
www/templates/db_name.html 文件代码:
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>{{ title }}</title>
<link href="{{ url_for('static', filename='bootstrap.min.css') }}" rel="stylesheet">
</head>
<body style="background-color: #eee;">
{% include 'header.html' %}
<div class="container-fluid">
<hr>
<div style="width: 80%;margin:0px auto;">
<h2>{{ title }}</h2>
<div class="row">
<table class="table table-striped">
<tr class="table-dark">
<th>数据库名称</th>
<th>数据库说明</th>
<th>操作</th>
</tr>
{% for key,item in dict_data.items() %}
<tr class="table-striped">
<td>{{ item["name"] | safe }}</td>
<td>{{ item["info"] | safe }}</td>
<td>{{ item["count"] | safe }}</td>
</tr>
{% endfor %}
</table>
</div>
</div>
</div>
</body>
</html>
在jinja2的模板中,常规的用法
- 变量的输出使用: {{ 变量名 }}
- 引入文件:{% include ‘header.html’ %}
- 输出的变量有html代码时使用safe, 例如:{{ item[“info”] | safe }}