模板

flask框架并没有实现自己的模板,而是使用Jinja2模板引擎,通过render_template函数返回一个html文件,这些html文件默认存储在项目根目录下的tempates文件夹中,这个目录是可以自定义的,创建Flask对象时,通过template_folder来设置。

from flask import Flask, render_template


app = Flask(__name__, template_folder='your_folder')

个人观点,使用模板,帮助我们解决了两个重要事情

  1. 代码复用
  2. 网页内容动态显示

一个网站有几百或上千个网页,它们每一个都可能有上千行html代码,这些代码有许多是相同的,或者说,这些网页可以共用一些代码。使用模板技术,可以将那些可共用的代码放在基础模板里,其他的网页可以继承这个基础模板,也可以用include的方式加载进来。

一个网站,同一个url,不同的人访问,显示的内容会不同,这些不同的内容可能是登录用户的个人信息,显然,不同的人有不同的信息,但所打开的网页url是相同的。想要实现这一点,可以使用ajax技术,前端页面通过ajax向后端发送请求,后端返回用户的具体信息。使用模板,则可以不必使用ajax在前端请求数据,在使用render_template返回html时,会将用户的信息一起返回,由模板引擎根据用户的信息对html进行渲染,以达到相同的效果。

由于我本人专注于后端开发,对于前端html,js等技术的了解不够深入,因此上面这两段内容均是我一家之言,如果有理解的不正确或是肤浅的地方,请各路大神指正。

下面的示例,我将向你展示如何使用这项技术,将后端的数据放到前端展示,下面是项目的结构示意

flask_demo/
├── __init__.py
├── app.py
└── templates
    └── welcome.html

app.py 的内容

from flask import Flask, render_template


app = Flask(__name__)

@app.route('/welcome')
def welcome():
    return render_template('welcome.html', name='小明')


app.run(port=5500)

welcome.html的内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>北京欢迎你</title>
</head>
<body>
    <p>北京欢迎你,</p>
</body>
</html>

运行app.py 脚本,服务启动后,在浏览器访问网址 http://127.0.0.1:5500/welcome, 你将看到如下的内容

北京欢迎你,小明

被小明替换, 这便是模板技术,当然,这只是最简单的应用,模板不只是能够进行一些变量的替换,还可以像写python代码一样在html写if 语句, for循环,进行更加复杂的操作,模板这个方向,我会专门写一章节的内容。

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案