【简说Python WEB】Jinja2模板
系统环境:Ubuntu 18.04.1 LTS
Python使用的是虚拟环境:virutalenv
Python的版本:Python 3.6.9
【简说Python WEB】Jinja2模板
早期的开发,前端代码和后端代码都是混合在一起的。例如:在早期的java web时期,html和css的一些前端元素,和后端的jsp代码都混在一起。使得代码难以维护。
现在,提倡前后端代码的分离,而Flask中的Jinja2模板用于代码分离,其中的变量通过真实值替换。
目前环境的代码树
(zsdpy1) zsd@zsd-virtual-machine:~/Zflask/chapter3/app$ tree
.
├── hello.py
└── templates
└── index.html
抽离出来的Html模板
其中templates/index.html是我抽离出来的html。如下:
<html>
<head>
<title>{{ title }}-zsdblog</title>
</head>
<body>
<h1>您好, {{ user.username }},欢迎来到我的博客!</h1>
</body>
</html>
其中title和user.username是要传入的变量。
渲染模板
from flask import render_template
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
user = {'username': '东瑜'}
return render_template('index.html', title='Home', user=user)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9000)
执行语句:
(zsdpy1) zsd@zsd-virtual-machine:~/Zflask/chapter3/app$ python hello.py
* Serving Flask app "hello" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:9000/ (Press CTRL+C to quit)
渲染效果:

条件语句
Jinja2也提供条件判断,和if语句类似。
templates/index_condition.html模板如下:
<html>
<head>
<title>{{ title }}-zsdblog</title>
</head>
<body>
{% if user %}
<h1>您好, {{ user.username }},欢迎来到我的博客!</h1>
{% else %}
<h1>您好, 游客,欢迎来到我的博客!</h1>
{% endif %}
</body>
</html>
其中,程序的含义:
代表如果有user,就告知谁来了我的博客。如果没有user,就代表游客。
hello_condition.py代码如下:
from flask import render_template
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
# user = {'username': '东瑜'}
return render_template('index_condition.html', title='Home')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9000)
可以看到,我注释了user对象,并且render_template参数的时候,也没有传user的变量。所以演示效果如下:

循环语句
相对于基础语法的for循环。
templates/index_loop.html模板语句如下:
<html>
<head>
<title>{{ title }}-zsdblog</title>
</head>
<body>
{% if user %}
<h1>您好, {{ user.username }},欢迎来到我的博客!</h1>
{% else %}
<h1>您好, 游客,欢迎来到我的博客!</h1>
{% endif %}
{% for post in posts %}
<div><p>{{ post.author.username }} 说: <b>{{ post.body }}</b></p></div>
{% endfor %}
</body>
</html>
web应用的代码如下:
from flask import render_template
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
user = {'username': '东瑜'}
posts = [
{
'author': {'username': '小明'},
'body': '北京的天气好好呀'
},
{
'author': {'username': '小黄'},
'body': '我今天很开心!'
}
]
return render_template('index_loop.html', title='Home', user=user, posts=posts)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9000)
演示效果如下:

【简说Python WEB】Jinja2模板的更多相关文章
- 【简说Python WEB】Flask应用的文件结构
目录 [简说Python WEB]Flask应用的文件结构 1.文件结构的目录 2.配置程序--config.py 3.app应用包 4.剥离出来的email.py 5.蓝本(BLueprint)的应 ...
- 【简说Python WEB】视图函数操作数据库
目录 [简说Python WEB]视图函数操作数据库 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境:virutalenv Python的版本:Python 3.6.9 ...
- 【简说Python WEB】Flask-Moment
目录 [简说Python WEB]Flask-Moment 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境:virutalenv Python的版本:Python 3.6 ...
- 【简说Python WEB】数据库
目录 [简说Python WEB]数据库 数据库表 docker安装MySQL Flask-SQLAlchemy操纵MySQL数据库 初始化 定义模型 定义关系 数据库的CRUD操作 创建表 inse ...
- 【简说Python WEB】Web应用部署
目录 [简说Python WEB]Web应用部署 应用层 缓存层 数据层 Gunicorn 的应用 1.安装Gunicorn 2.Gunicorn的启动 Nginx 的应用 1.docker方式部署安 ...
- Python Flask Jinja2模板引擎
模板 简介 模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请 求的上下文中才能知道. 渲染 使用真实值替换变量,再返回最终得到的响应字符串,这一过程 称为渲染.为了渲染模 ...
- 【简说Python WEB】flask-mail电子邮件
目录 flask-mail flask shell发送邮件 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境:virutalenv Python的版本:Python 3.6 ...
- 【简说Python WEB】flask-mail电子邮件异步Asynchronous
系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境:virutalenv Python的版本:Python 3.6.9 flask-mail电子邮件异步Asynchronou ...
- 【简说Python WEB】pyechart在flask中的应用
个人笔记总结,可读性不高.只为自己总结用.怕日后忘记. 这里用到了tushare,pandas等python组件. pyechart的案例 c = ( Bar() .add_xaxis([" ...
- Flask初学者:Jinja2模板
Python的Jinja2模板,其实就是在HTML文档中使用控制语句和表达语句替换HTML文档中的变量来控制HTML的显示格式,Python的Jinja2模板可以更加灵活和方便的控制HTML的显示,而 ...
随机推荐
- YOLOv1/v2/v3简述 | 目标检测
YOLO系列是目标检测领域里十分经典的结构,虽然目前已经出了很多更高质量更复杂的网络,但YOLO的结构依然可以给算法工程师们带来很多的启发.这3篇论文看下来,感觉像是一本调参说明书,教你如何使用各种t ...
- KingbaseES 数据库安装报错案例分析
Linux系统安装V008R006C007B0012版本KingbaseES数据库报错:Unsupported major.minor version 52.0 系统版本: [root@vm-10-3 ...
- HashMap对key或value进行排序--Java--小白必懂2
HashMap对key进行排序 public static void main (String[]args){ HashMap<String, Integer> map = new Has ...
- rsync 运维利器,同步工具
NAME rsync - faster, flexible replacement for rcp SYNOPSIS rsync [OPTION]... SRC [SRC]... DEST rsync ...
- 在Keycloak中实现多租户并在ASP.NET Core下进行验证
Keycloak是一个功能强大的开源身份和访问管理系统,提供了一整套解决方案,包括用户认证.单点登录(SSO).身份联合.用户注册.用户管理.角色映射.多因素认证和访问控制等.它广泛应用于企业和云服务 ...
- OpenHarmony:4.0 Release版本的开发数据
OpenAtom OpenHarmony 4.0 Release版本于 10 月 27 日发布,经过了32周的开发周期.在此期间,有 65499 个 Committs 进入了 版本.在这个周期内完成了 ...
- 技术传递温度,HMS Core手语服务走进暖心课堂
近日,华为HMS Core手语服务携手吉林大学.长春大学特教学院联合打造暖心课堂,在直播网课中加入AI手语翻译,于人文中融入科技,知识中融入温暖. 手语翻译:同学们大家好 HMS Core手语服务通过 ...
- NVIDIA实习
额,大意了,之前只是有想准备nvidia的实习,但是具体时间没有关注,结果这下正正好错过 这下提前细细准备一下nvidia的实习了 公众号 Cascatrix 其他经验
- HarmonyOS实现静态与动态数据可视化图表
一. 样例介绍 本篇Codelab基于switch组件和chart组件,实现线形图.占比图.柱状图,并通过switch切换chart组件数据的动静态显示.要求实现以下功能: 1. 实现静态数据可视化 ...
- Django框架——图书管理系统、聚合查询、分组查询、F与Q查询
图书管理系统 1.表设计 先考虑普通字段再考虑外键字段 数据库迁移.测试数据录入 2.首页展示 3.书籍展示 4.书籍添加 5.书籍编辑 后端如何获取用户想要编辑的数据.前端如何展示出待编辑的数据 6 ...