Flask 使用 Jinja2 模板渲染页面的方法
本文介绍如何在 Flask 中使用 Jinja2 模板引擎渲染 HTML 页面。通过创建 templates 目录存放 HTML 文件,利用 render_template 函数将视图与模板分离,实现数据交互与页面展示。文章包含从基础 Hello World 到模板引用的完整代码示例及启动验证步骤,帮助开发者掌握 Flask 页面渲染的核心方法。
Flask 模板渲染基础
Flask 是一个轻量级的 Python Web 框架,原生支持使用页面模板(Template)来构建动态网页。通过模板,开发者可以将 Python 逻辑与 HTML 结构分离,并通过参数传递实现数据交互。在开始之前,请确保已安装 Flask 环境。
环境准备与版本确认
首先,通过命令行确认 Flask 的安装路径及当前版本,确保开发环境就绪。
liumiaocn:flask liumiao$ which flask
/usr/local/bin/flask
liumiaocn:flask liumiao$ flask --version
Flask 1.0.2
Python 2.7.10 (default, Jul 15 2017, 17:16:57)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]
liumiaocn:flask liumiao$基础示例:直接返回 HTML 字符串
在 Flask 中,最简单的页面展示方式是直接在视图函数中返回 HTML 字符串。虽然这种方式简单直观,但在页面结构复杂时,代码可读性较差,不利于维护。
1. 编写基础代码
创建一个名为 flask_1.py 的文件,内容如下:
#!/usr/bin/python
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1>Hello World!</h1>"
if __name__ == "__main__":
app.debug=True
app.run(host='0.0.0.0',port=7000)
liumiaocn:flask liumiao$2. 设置执行权限并启动服务
为脚本添加可执行权限(如 755),然后直接运行该文件启动微服务进程:
liumiaocn:flask liumiao$ chmod 755 flask_1.py
liumiaocn:flask liumiao$ ./flask_1.py
* Serving Flask app "flask_1" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 131-533-0623. 验证执行结果
启动成功后,可以通过 curl 命令或浏览器访问 http://localhost:7000 来确认页面显示。使用 curl 可以查看原始的 HTML 源码:
liumiaocn:flask liumiao$ curl http://localhost:7000
<h1>Hello World!</h1>liumiaocn:flask liumiao$

进阶示例:使用 Jinja2 模板引擎
为了解决嵌入式 HTML 代码查看不便的问题,Flask 提供了基于 Jinja2 的模板渲染功能。通过将 HTML 文件独立存放,并使用 render_template 模块进行关联,可以实现更清晰的代码结构。
1. 创建模板目录与 HTML 文件
Flask 默认在 templates 目录下搜索模板文件。因此,需要在项目根目录创建 templates 文件夹,并在其中创建 index.html 文件:
liumiaocn:flask liumiao$ ls templates/
index.html
liumiaocn:flask liumiao$ cat templates/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello Template</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
liumiaocn:flask liumiao$2. 修改 Python 代码以引用模板
在 Python 代码中,需要引入 render_template 模块,并在视图函数中调用它来关联 URL 与模板文件。创建 flask_2.py:
#!/usr/bin/python
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route("/")
def hello():
return render_template("index.html")
if __name__ == "__main__":
app.debug=True
app.run(host='0.0.0.0',port=7000)
liumiaocn:flask liumiao$3. 启动服务并验证
运行 flask_2.py 启动服务,并通过 curl 或浏览器访问,确认页面渲染结果:
liumiaocn:flask liumiao$ python flask_2.py
* Serving Flask app "flask_2" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://0.0.0.0:7000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 131-533-062liumiaocn:~ liumiao$ curl http://localhost:7000
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello Template</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>liumiaocn:~ liumiao$

总结
通过上述步骤,我们完成了从基础 HTML 字符串返回到使用 Jinja2 模板引擎渲染页面的转换。使用 render_template 不仅使代码结构更加清晰,也为后续添加动态数据交互奠定了基础。以上就是 Flask 使用 Jinja2 模板渲染页面的详细内容,更多关于 Flask 模板开发、Python Web 框架及 Jinja2 语法技巧的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













