七天学会flask(六)---模板(第一天)
flask框架并没有实现自己的模板,而是使用Jinja2模板引擎,通过render_template函数返回一个html文件,这些html文件默认存储在项目根目录下的tempates文件夹中,这个目录是可以自定义的,创建Flask对象时,通过template_folder来设置。
from flask import Flask, render_template app = Flask(__name__, template_folder='your_folder')
个人观点,使用模板,帮助我们解决了两个重要事情
- 代码复用
- 网页内容动态显示
一个网站有几百或上千个网页,它们每一个都可能有上千行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>北京欢迎你,{{ name }}
</p> </body> </html>
运行app.py 脚本,服务启动后,在浏览器访问网址 http://127.0.0.1:5500/welcome, 你将看到如下的内容
北京欢迎你,小明
被小明替换, 这便是模板技术,当然,这只是最简单的应用,模板不只是能够进行一些变量的替换,还可以像写python代码一样在html写if 语句, for循环,进行更加复杂的操作,模板这个方向,我会专门写一章节的内容。