个人介绍网页模板html_Flask干货:Jinja2模板到底是个啥?

d0e610fd1d6ad50d36fafca8b73834f1.png

一、啥是模板引擎

关于Jinja2模板引擎,要从小明暗恋小红的事情说起。

大学的时候,小红是学校里的校花。有一天,小明在去食堂的路上看见站在远处的小红。

cb283252661b89e1d289af336aca8fb4.png

于是… …

… … (此处省略100000字)… …

小明决定写个网页向美丽的小红表白。可是小红非常有钱,数码装备应有尽有:个人PC、平板电脑、手机、移动手表… …怎样才能写一份业务逻辑代码,让小红在响应式或非响应式设备上都能看到呢?

哈!机智的前辈早已看穿一切。为了提升开发效率,前后端的分离非常重要,后端负责业务逻辑/数据访问, 前端负责表现、交互逻辑。

1b3d89bea0090443c2de2e60743b190b.png

如果把业务逻辑和表现逻辑混在一起,势必造成系统耦合度高、代码维护困难的现象,因此分离业务逻辑和表现逻辑,把变现逻辑交给试图引擎,即网页模板,很有必要。

Flask提供了Jinja2模板引擎来渲染模板,实质上是一个静态的包含HTML语法的全部或片段的文本文件,当然也可以包含由变量表示的动态部分。

二、怎么用模板引擎

首先,新建一个叫templates的文件夹,并在文件夹下新建first.htmlsecond.html文件,文件内容如下:

7b58250cb0e9db178cd224f3f3662ab6.png

:这里使用VS Code编辑HTML文件,也可以用Notepad++进行编辑。对于新手可以安装后者,如果需要安装教程可以在评论区留言。

first.html内容如下:

c6e950048757195320b836d506a23da3.png

源代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>这是第一页</title>
</head>
<body>
    <h1>从我看到你的第一眼就爱上你了!</h1>
</body>
</html>

second.html内容如下:

339f3ee903c0e998812ca5b0c9062687.png

源代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>这是第二页</title>
</head>
<body>
    <h1>你可以嫁给我吗?</h1>
</body>
</html>

然后在templates文件夹新建love.py文件,内容如下:

b94e4f5eecda969e01a9513c6e5cbfc5.png
 from flask import Flask  #导入模块
from flask import render_template
​
app  = Flask(__name__)
​
@app.route('/')  #定义第一页视图
def first():
    return render_template('first.html')
​
@app.route('/second/')  #定义第二页视图
def second():
    return render_template('second.html')
​
if __name__ == '__main__':
    app.run(debug=True)

其中最重要的是render_template()函数,使用时需要导入render_template模块,作用就是返回网页文件。

最后,在虚拟环境中运行python文件,并用浏览器输入网址http://127.0.0.1:5000测试:

8ec67e93e7082e81e4b5c49f6a814917.png

如要跳转到第二页需要手动输入网址http://127.0.0.1:5000/second/其实在实际应用中,可以在第一页添加按钮,按钮指定唯一的网址就能实现跳转。用户登录按钮、确定按钮都是这个原理。

992c0ca5e181783fff42e7c81f8b7e39.png

三、如何向模板中传递参数

修改second.html和love.py文件。

HTML文件修改<h1>标签,如下:

 <body>
    <h1>{{name}},你可以嫁给我吗?</h1>
</body>

Python文件修改第二页视图文件,如下:

 @app.route('/second/<hername>')  #定义第二页视图
def second(hername):
    return render_template('second.html', name=hername)

相同的方法进行测试。在第二页网址处需要手动传入参数http://127.0.0.1:5000/second/小红,回车后结果如下:

be5bc761197947efd0bee894fdb5c566.png

在实际应用中,可以在HTML文件中用表单接收数据再进行传递,实现用户交互。

是不是觉得方便多了?

00448ef6d5991787d8c15f07f7bec7e3.png

除了以上简单应用外,Jinja2模板引擎中还可以使用if 和for循环控制语句,将在下一篇文章中进行介绍!

bc563b60dd7bef7ea8c3fcf5628d5a20.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值