当前位置: 首页 > news >正文

6-模板初步使用

 官网:

        中文版: 介绍-Jinja2中文文档

        英文版: Template Designer Documentation — Jinja Documentation (2.11.x)

模板语法 

1. 模板渲染

(1) app.py 准备数据

import jsonfrom flask import Flask,render_templateimport settingsapp = Flask(__name__)
app.config.from_object(settings)  # 加载配置文件class Girl:  # 自定义类def __init__(self, name):self.name = nameself.gender = "女"def __str__(self):return self.name@app.route("/show")
def show():name = "coco"  # strage = 18  # intfirends = ["A", "B", "C"]  # listdict1 = {"gift": "包"}  # dict# 创建对象girlfriend = Girl("lili")  # 自定义的类构建的类型: Girl类型# 向模板传递数据return render_template("index.html", name=name, age=age, firends=firends, dict1=dict1, girl=girlfriend)if __name__ == '__main__':app.run(port=8080)

(2) index.html 渲染数据

{{ name }}
{{ age }}
{{ firends.0  }}  {#{{ list.0 }} 同 {{ list[0] }}#}
{{ dict1.gift }}  {#{{ dict.key }} 同 {{dict.get(key) }}#}
{{ girl.name }}  {#{{ gril.name }} 同 {{ 对象.属性 }}#}

2. if 判断 和 for 循环 和 loop 内置变量

 

(1)app.py 准备数据

from flask import Flask,render_templateimport settingsapp = Flask(__name__)
app.config.from_object(settings)  # 加载配置文件@app.route("/show")
def show():girls = ["AA", "BBB", "CC"]dict1 = [{"name": "张三", "pwd": "123", "addr": "beijing", "phone": "13800000001"},{"name": "李四", "pwd": "123", "addr": "shanghai", "phone": "13800000002"},{"name": "王五", "pwd": "123", "addr": "guangzhou", "phone": "13800000003"},]return render_template("show.html", grils=girls, users=dict1)if __name__ == '__main__':app.run(port=8080)

(2) show.html渲染数据

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.a {color: red;}</style>
</head>
<body><ul>
{#循环列表渲染数据#}{% for gril in grils %}<li>{{ gril }}</li>{% endfor %}
</ul>
<hr><ul>
{#循环列表,根据条件增加样式#}{% for gril in grils %}{% if gril|length>=3 %}<li class="a">{{ gril }}</li>{% else %}<li>{{ gril }}</li>{% endif %}{% endfor %}
</ul>
<hr><table border="1" cellpadding="0" cellspacing="0" width="50%">
{#    循环字典 #}{% for user in users %}<tr><td>{{ user.name }}</td><td>{{ user.pwd }}</td><td>{{ user.addr }}</td><td>{{ user.phone }}</td></tr>{% endfor %}
</table><hr><table border="1" cellpadding="0" cellspacing="0" width="50%">
{#    循环字典,根据条件增加样式 #}{% for user in users %}<tr {% if loop.index==2 %}style="background-color:aqua"{% endif %}><td>{{ loop.index }}</td><td>{{ user.name }}</td><td>{{ user.pwd }}</td><td>{{ user.addr }}</td><td>{{ user.phone }}</td></tr>{% endfor %}</table>
</body>
</html>

http://www.lryc.cn/news/134164.html

相关文章:

  • STM32CubeMX配置STM32F103 USB Virtual Port Com(HAL库开发)
  • RocketMQ与Kafka对比(18项差异)
  • 英文翻译照片怎么做?掌握这个方法轻松翻译
  • Linux介绍
  • 计算机竞赛 卷积神经网络手写字符识别 - 深度学习
  • [Go版]算法通关村第十三关白银——数组实现加法和幂运算
  • React笔记[tsx]-解决Property ‘frames‘ does not exist on type ‘Readonly<{}>‘
  • ThinkPHP6.0+ 使用Redis 原始用法
  • SRM系统询价竞价管理:优化采购流程的全面解析
  • c++选择题笔记
  • Android2:构建交互式应用
  • ChatGLM-6B微调记录
  • Linux Kernel 4.12 或将新增优化分析工具
  • 【30天熟悉Go语言】10 Go异常处理机制
  • 飞机打方块(四)游戏结束
  • 保研之旅1:西北工业大学电子信息学院夏令营
  • [WMCTF 2023] crypto
  • 图像分割unet系列------TransUnet详解
  • ASCII码-shellcode的技巧
  • spring cloud 之 dubbo nacos整合
  • MySQL如何进行表之间的关联更新
  • Docker创建 LNMP 服务+Wordpress 网站平台
  • node没有自动安装npm时,如何手动安装 npm
  • C# 使用递归方法实现汉诺塔步数计算
  • 窗口函数大揭秘!轻松计算数据累计占比,玩转数据分析的绝佳利器
  • 健康检测智能睡眠床垫方案
  • 计网第三章(数据链路层)(五)
  • 嵌入式系统中常见内存的划分方法
  • 深入理解与实现:常见搜索算法的Java示例
  • PHP自己的框架实现操作成功失败跳转(完善篇四)