• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共46篇

    python3.X - Web - Flask1.1.1

关闭

返回栏目

关闭

返回python3.X - Web - Flask1.1.1栏目

32 - Flask - 扩展 - jinja2 - 模版处理信息 - {{}}

作者:

贺及楼

成为作者

更新日期:2024-11-22 23:34:35

Flask - 扩展 - jinja2 - 模版处理信息 - {{}}

jinja2 的简介

Python 的 Jinja2 是一个现代且设计简洁的模板引擎,广泛用于Web开发中。它允许开发者使用模板语言来动态生成文本输出,特别适合生成HTML、XML或电子邮件内容。以下是 Jinja2 的一些主要作用和特点:

  1. 变量替换:在模板中插入变量值,将占位符替换成实际数据。
  2. 循环和条件语句:模板中可以包含循环和条件逻辑,实现复杂的文本处理。
  3. 自动转义:自动对变量进行HTML转义,提高Web应用的安全性。
  4. 继承和包含:支持模板继承,可以创建基础模板并被其他模板继承,实现布局的复用。
  5. 自定义函数和过滤器:可以定义自定义的模板函数和过滤器,扩展模板引擎的功能。
  6. 集成环境:与Web框架如Flask和Django集成,简化Web应用的开发流程。

Jinja2 提供了强大的模板功能,使得开发者能够编写更加清晰和可维护的模板代码,是现代Web开发中不可或缺的工具之一。

作用:从Flask传递信息到HTML(模版)

基本用法

  1. 基本{{ info }}
  2. 方法{{% %}}
  3. 注释{{# #}}
  4. 注释{# {{page.book()}} #}

参考Flask - return方法

简单模版
python

  1. @app.route("/", methods=["GET"])
  2. def hello_flask():
  3. all = User.query.filter_by().all()
  4. info = "ok"
  5. return render_template("index.html",all=all,info=info)

html

  1. <p>{{all}}</p>
  2. <p>{{info}}</p>

模版 - 无参数

python

  1. return render_template("index.html")

没参数也就没有的写

模版 - 有参数

python

  1. return render_template("index.html",all=all,info=info)

html

  1. <p>{{all}}</p>
  2. <p>{{info}}</p>

字符串返回到模板

python

  1. 方式一:
  2. return "fail"
  3. 方式二:
  4. info = "error"
  5. return info

html

  1. <p>{{info}}</p>

列表返回到模板

python

  1. 方式一:
  2. return ["A","B","C"]
  3. 方式二:
  4. info = ["A","B","C"]
  5. return info

html

  1. <p>{{info[0]}}</p>
  2. <p>{{info[1]}}</p>
  3. <p>{{info[2]}}</p>
  4. 按顺序:显示ABC

有参数 - 数据库

python

  1. info = User.query.filter_by(id=1)
  2. return info

html

  1. <ul>
  2. {% for a in info %}
  3. <li>{{a.name}}</li>
  4. {% endfor %}
  5. </ul>

迭代字典

  1. {% for key, value in row.items() %}
  2. {{ key }} {{ value }}
  3. {% endfor %}

解释:
1.查数据库有多行多列,是可以的
2.jinja2的for循环可以遍历出来
注意:复杂的遍历去官网搜索

if函数

  1. {% if 条件1 %}
  2. 语句块1
  3. {% elif 条件2 %}
  4. 语句块2
  5. {% else %}
  6. 不符合所有条件
  7. {% endif %}

例子

  1. <p>
  2. {% for item in list1 %}
  3. {% if item|length > 8 %}
  4. {{ item }} <br>
  5. {% elif item|length < 6 %}
  6. {{ "wwwwww" }} <br>
  7. {% else %}
  8. {{ "qqqqqq" }} <br>
  9. {% endif %}
  10. {% endfor %}
  11. </p>

xx是{{xx}}不用写括号

判断非空

  1. {% if item %}
  2. {{ item }}
  3. {% endif %}

就跟python 的if item : 类似语句 - if xxx: else: - 判断有无,判断是否

与或非

or and

  1. {% if flag=="A" or flag=="B" %}

javascript和css里的jinja2

在模版文件html里写上

  1. let data = {{data|tojson}}
  2. console.log(data)

要注意的是,全部数据不可以空,空的话pandas可以用内容 - df.fillna() - NaN转换,来解决 fillna(‘[]’)