Web框架——Flask系列之Jinja2模板引擎(二)

Jinja2模板引擎简介

一、Jinja2模板概述

用来展示数据的html页面,这个过程也通常称为渲染,属于Jinja2的功能 使用模板的好处:

  1. 视图函数只负责业务逻辑和数据处理(业务逻辑方面)
  2. 而模板则取到视图函数的数据结果进行展示(视图展示方面)
  3. 代码结构清晰,耦合度低

二、Jinja2特点

Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,其是Flask内置的模板语言。

模板语言:是一种被设计来自动生成文档的简单文本格式,在模板语言中,一般都会把一些变量传给模板,替换模板的特定位置上预先定义好的占位变量名
使用render_template函数封装模板引擎

三、Jinja2模板的使用

3.1 Jinja2模板语法:

  1. 获取变量值:
 	<h1>整数:{ {number} }</h1><h1>元祖:{ {tuple[0]} }</h1><h1>列表:{ { list[0] } }</h1><h1>字典:{ { dict['key'] } }</h1>
  1. 分支语句if
    { % if 条件 % }
    语句1
    { % else % }
    语句2
    { % endif % }

  2. for循环
    {% for 变量 in 容器 %}
    语句
    {% endfor%}

  3. 注释
    {# 注释内容 #}

3.2代码展示:

使用函数: render_template(‘模板文件名’,key=value)
将数据携带到,文件中进行展示
创建文件demo01.py,代码如下:

from flask import Flask,render_template
app = Flask(__name__) #默认省略了三个参数,static_url_path, static_folder, template_folders@app.route('/')
def hello_world():#定义数据,整数,字符串,元祖,列表,字典num = 10str = "hello"tuple = (1,2,3,4)list = [5,6,7,8]dict = {"name":"张三","age":13}return render_template('file01.html',my_num=num,my_str=str,my_tuple=tuple,my_list=list,my_dict=dict)if __name__ == '__main__':app.run(debug=True)

在templates文件夹下,创建文件file01.html文件,代码如下:

<h2>1.获取各种变量的值</h2><h3>整数: {{ my_num + 20}}</h3><h3>字符串: {{ my_str + " python" }}</h3><h3>元组: {{ my_tuple }}, 分开获取:{{ my_tuple[0] }}, {{ my_tuple[1] }}</h3><h3>列表: {{ my_list }}, 分开获取:{{ my_list[0] }}, {{ my_list[1] }}</h3><h3>字典: {{ my_dict }},分开获取:{{ my_dict.name }}, {{ my_dict[age] }}</h3><h2>2.遍历元祖中所有的元素</h2>{% for item in my_tuple %}<li>{{ item }}</li>{% endfor %}<h2>3.取出列表中所有偶数</h2>{% for item in my_list %}{% if item %2 == 0 %}{{ item }}{% endif %}{% endfor %}<h2>4.遍历字典内容</h2>{% for key in my_dict %}{# 如果直接是mydict.key ,那么这个key是一个字符串, 如果是 mydict[key], 那么key当成变量 #}<li>{{ key }} = {{ my_dict[key] }}</li>{% endfor %}

11_templates.py文件:

from flask import Flask,render_templateapp = Flask(__name__)@app.route("/index",methods=["GET","POST"])
def index():data = {"name":"python","age" : 18}# return render_template("index.html",name="python",age=18)# **data将字典进行解析return render_template("index.html", **data)if __name__ == '__main__':app.run(debug=True)

index.html文件:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p>naem = {{name}}</p><p>age = {{age}}</p>
</body>
</html>

在这里插入图片描述

from flask import Flask,render_template
app = Flask(__name__)@app.route("/index",methods=["GET","POST"])
def index():data = {"name":"python","age" : 18,"my_dict": {"city":"sz"},"my_list": [1,2,3,4,5],"my_int": 0}# return render_template("index.html",name="python",age=18)# **data将字典进行解析return render_template("index.html", **data)if __name__ == '__main__':app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><p>name = {{name}}</p><p>age = {{age}}</p><p>my_dict:city = {{my_dict["city"]}}</p><p>my_dict:city = {{my_dict.city}}</p><p>my_list[my_int]:{{my_list[my_int]}}</p><p>my_list[0] + my_list[1] = {{my_list[0] + my_list[1]}}</p><p>{{"hello" + " python!" }}</p></body>
</html>

在这里插入图片描述

3.3 扩展:

在一个 for 循环块中你可以访问这些特殊的变量:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 2177. 找到和为给定整数的三个连续整数

文章目录1. 题目2. 解题1. 题目 给你一个整数 num &#xff0c;请你返回三个连续的整数&#xff0c;它们的 和 为 num 。 如果 num 无法被表示成三个连续整数的和&#xff0c;请你返回一个 空 数组。 示例 1&#xff1a; 输入&#xff1a;num 33 输出&#xff1a;[10,11,12]…

LeetCode 2178. 拆分成最多数目的偶整数之和(等差数列求和)

文章目录1. 题目2. 解题1. 题目 给你一个整数 finalSum 。请你将它拆分成若干个 互不相同 的偶整数之和&#xff0c;且拆分出来的偶整数数目 最多 。 比方说&#xff0c;给你 finalSum 12 &#xff0c;那么这些拆分是 符合要求 的&#xff08;互不相同的偶整数且和为 finalS…

Web框架——Flask系列之CSRFToken详解(四)

CSRF(理解) 一. 什么是CSRFToken? CSRF全拼为Cross Site Request Forgery&#xff0c;译为跨站请求伪造。CSRF指攻击者盗用了你的身份&#xff0c;以你的名义发送恶意请求。 包括&#xff1a;以你名义发送邮件&#xff0c;发消息&#xff0c;盗取你的账号&#xff0c;甚至于…

apache ab test使用 单独安装ab和htpasswd

apache ab test使用 apache ab test使用 单独安装ab和htpasswd 转载自&#xff1a; http://www.cnblogs.com/super-d2/p/3831155.html#top http://blog.chinaunix.net/uid-20382003-id-3032167.html 注意&#xff1a;ab test是不支持长连接压测的&#xff0c;只支持短连接压测 …

LeetCode 2180. 统计各位数字之和为偶数的整数个数

文章目录1. 题目2. 解题1. 题目 给你一个正整数 num &#xff0c;请你统计并返回 小于或等于 num 且各位数字之和为 偶数 的正整数的数目。 正整数的 各位数字之和 是其所有位上的对应数字相加的结果。 示例 1&#xff1a; 输入&#xff1a;num 4 输出&#xff1a;2 解释&a…

LeetCode 2181. 合并零之间的节点(链表)

文章目录1. 题目2. 解题1. 题目 给你一个链表的头节点 head &#xff0c;该链表包含由 0 分隔开的一连串整数。 链表的 开端 和 末尾 的节点都满足 Node.val 0 。 对于每两个相邻的 0 &#xff0c;请你将它们之间的所有节点合并成一个节点&#xff0c;其值是所有已合并节点的…

Web框架——Flask系列之模板使用练习(六)

一、实现的效果如下: 二、实现要求&#xff1a; 给定如下5条数据,只显示4行数据&#xff0c;背景颜色依次为&#xff1a;黄&#xff0c;绿&#xff0c;红&#xff0c;紫 my_list [{"id": 1,"value": "我爱工作"},{"id": 2,"va…

Android安全研究经验谈

安全研究做什么从攻击角度举例&#xff0c;可以是&#xff1a;对某个模块进行漏洞挖掘的方法&#xff0c;对某个漏洞进行利用的技术&#xff0c;通过逆向工程破解程序、解密数据&#xff0c;对系统或应用进行感染、劫持等破坏安全性的攻击技术等。而防御上则是&#xff1a;查杀…

LeetCode 2182. 构造限制重复的字符串(贪心、map)

文章目录1. 题目2. 解题1. 题目 给你一个字符串 s 和一个整数 repeatLimit &#xff0c;用 s 中的字符构造一个新字符串 repeatLimitedString &#xff0c;使任何字母 连续 出现的次数都不超过 repeatLimit 次。你不必使用 s 中的全部字符。 返回 字典序最大的 repeatLimited…

Web框架——Flask系列之WTF表单验证练习(七)

一、Web表单 web表单是web应用程序的基本功能。 它是HTML页面中负责数据采集的部件。表单有三个部分组成&#xff1a;表单标签、表单域、表单按钮。表单允许用户输入数据&#xff0c;负责HTML页面数据采集&#xff0c;通过表单将用户输入的数据提交给服务器。 在Flask中&…

LeetCode 2185. 统计包含给定前缀的字符串

文章目录1. 题目2. 解题1. 题目 给你一个字符串数组 words 和一个字符串 pref 。 返回 words 中以 pref 作为 前缀 的字符串的数目。 字符串 s 的 前缀 就是 s 的任一前导连续字符串。 示例 1&#xff1a; 输入&#xff1a;words ["pay","attention",…

Web框架——Flask系列之Flask-SQLAlchemy安装与使用 定义数据模型(八)

Flask-SQLAlchemy安装及设置 SQLALchemy 实际上是对数据库的抽象&#xff0c;让开发者不用直接和 SQL 语句打交道&#xff0c;而是通过 Python 对象来操作数据库&#xff0c;在舍弃一些性能开销的同时&#xff0c;换来的是开发效率的较大提升SQLAlchemy是一个关系型数据库框架…

多线程篇-NSThread-简单使用

创建的三种方式 第一种 介绍/*alloc init 创建第一个参数&#xff1a;目标对象第二个参数&#xff1a;选择器&#xff0c;线程启动要调用哪个方法第三个参数&#xff1a;前面方法要接收的参数&#xff08;最多只能接收一个参数&#xff0c;没有则传nil&#xff09;*/ NSThread …

LeetCode 2186. 使两字符串互为字母异位词的最少步骤数

文章目录1. 题目2. 解题1. 题目 给你两个字符串 s 和 t 。在一步操作中&#xff0c;你可以给 s 或者 t 追加 任一字符 。 返回使 s 和 t 互为 字母异位词 所需的最少步骤数。 字母异位词 指字母相同但是顺序不同&#xff08;或者相同&#xff09;的字符串。 示例 1&#xf…

Web框架——Flask系列之Flask-SQLAlchemy数据库的基本操作(九)

数据库基本操作 在Flask-SQLAlchemy中&#xff0c;插入、修改、删除操作&#xff0c;均由数据库会话管理。 会话用 db.session 表示。在准备把数据写入数据库前&#xff0c;要先将数据添加到会话中然后调用db.session.commit()方法提交会话。 db.session.add&#xff08;role&…

bash/shell编程学习(2)

先来复习上节重定向的用法&#xff1a; 1.快速清空文件 cat demo.txt < /dev/null注&#xff1a;linux中有一个经典名言【一切皆文件】&#xff0c;/dev/null可以认为是一个特殊的空文件&#xff0c;更形象点&#xff0c;可以理解为科幻片中的黑洞&#xff0c;任何信息重向定…

LeetCode 2187. 完成旅途的最少时间(二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个数组 time &#xff0c;其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间。 每辆公交车可以 连续 完成多趟旅途&#xff0c;也就是说&#xff0c;一辆公交车当前旅途完成后&#xff0c;可以 立马开始 下一趟旅途。 每辆…

Web框架——Flask系列之综合案例——图书管理系统(十)

一、知识点: 表单创建数据库操作一对多关系演练 二、实现步骤: 创建数据库配置信息,定义模型类创建数据库表,添加测试数据编写html页面,展示数据添加数据删除书籍,删除作者 三、创建数据库连接信息,定义模型 from flask import Flask, render_template, redirect, url_for,…

LeetCode 2190. 数组中紧跟 key 之后出现最频繁的数字

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;同时给你一个整数 key &#xff0c;它在 nums 出现过。 统计 在 nums 数组中紧跟着 key 后面出现的不同整数 target 的出现次数。换言之&#xff0c;target 的出现次数为满足以下条件的 i 的…

Web框架——Flask系列之request请求参数详解(十一)

一、request参数 request 就是flask中代表当前请求的 request 对象&#xff0c;其中一个请求上下文变量(理解成全局变量&#xff0c;在视图函数中直接使用可以取到当前本次请求) from flask import request 就是Flask中表示当前请求的request对象&#xff0c;request对象中保存…