
Python 的 Jinja2 是一个现代且设计简洁的模板引擎,广泛用于Web开发中。它允许开发者使用模板语言来动态生成文本输出,特别适合生成HTML、XML或电子邮件内容。以下是 Jinja2 的一些主要作用和特点:
Jinja2 提供了强大的模板功能,使得开发者能够编写更加清晰和可维护的模板代码,是现代Web开发中不可或缺的工具之一。
作用:从Flask传递信息到HTML(模版)
基本{{ info }}方法{{% %}}注释{{# #}}注释{# {{page.book()}} #}
简单模版
python
@app.route("/", methods=["GET"])def hello_flask():all = User.query.filter_by().all()info = "ok"return render_template("index.html",all=all,info=info)
html
<p>{{all}}</p><p>{{info}}</p>
python
return render_template("index.html")
没参数也就没有的写
python
return render_template("index.html",all=all,info=info)
html
<p>{{all}}</p><p>{{info}}</p>
python
方式一:return "fail"方式二:info = "error"return info
html
<p>{{info}}</p>
python
方式一:return ["A","B","C"]方式二:info = ["A","B","C"]return info
html
<p>{{info[0]}}</p><p>{{info[1]}}</p><p>{{info[2]}}</p>按顺序:显示ABC
python
info = User.query.filter_by(id=1)return info
html
<ul>{% for a in info %}<li>{{a.name}}</li>{% endfor %}</ul>
迭代字典
{% for key, value in row.items() %}{{ key }} {{ value }}{% endfor %}
解释:
1.查数据库有多行多列,是可以的
2.jinja2的for循环可以遍历出来
注意:复杂的遍历去官网搜索
{% if 条件1 %}语句块1{% elif 条件2 %}语句块2{% else %}不符合所有条件{% endif %}
例子
<p>{% for item in list1 %}{% if item|length > 8 %}{{ item }} <br>{% elif item|length < 6 %}{{ "wwwwww" }} <br>{% else %}{{ "qqqqqq" }} <br>{% endif %}{% endfor %}</p>
xx是{{xx}}不用写括号
判断非空
{% if item %}{{ item }}{% endif %}
就跟python 的if item : 类似语句 - if xxx: else: - 判断有无,判断是否
or and
{% if flag=="A" or flag=="B" %}
在模版文件html里写上
let data = {{data|tojson}}console.log(data)
要注意的是,全部数据不可以空,空的话pandas可以用内容 - df.fillna() - NaN转换,来解决 fillna(‘[]’)