Flask 是一个适用于 Python 的轻量级 Web 框架,可以轻松构建 Web 应用程序。
但是,这只是一个简单的文本,如“Hello Flask!”。在实际应用中,您需要呈现的不仅仅是简单的文本。您需要呈现 HTML 模板。
在 Flask 中,我们可以使用 Jinja 来实现这一功能。

Jinja
它的强大功能之一是使用 Jinja 模板引擎呈现 HTML 模板。
Jinja 模板是用您已经熟悉的普通 HTML 编写的。但除此之外,您还可以使用特殊的语法来处理动态内容,例如从请求或其他代码源向模板传递数据。还可以使用循环和条件等控制结构。
让我们来看看它的基本工作方式:
Welcome to Flask {% if user.is_logged_in %}Welcome back, {{ user.name }}!
{% else %}Please log in to continue.
{% endif %}
它看起来像一个普通的 HTML 文件,但正如我们所看到的,我们使用了一些特殊的语法,如 {{ }} 来插入变量,使用 {% %} 来添加循环和条件。
渲染模板
要渲染模板,我们需要将其放入 templates 目录。
. |-- app.py |-- templates |-- about.html |-- index.html
然后,我们在 Python 应用程序文件中使用 render_template 函数来渲染 HTML 模板。如果我们扩展上一篇文章中的相同代码,我们的代码现在看起来就像下面这样:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/about')
def about():
return render_template('about.html')
传递变量
在上述模板中,我们有 {{ name }} 和 {{ user.is_logged_in }} 变量。但是,我们还没有向模板传递任何变量。
要向模板传递变量,我们可以将它们作为参数传递给 render_template 函数。
例如:
@app.route('/')
def home():
return render_template('index.html', user={'is_logged_in': True, 'name': 'Joann'})
现在,当我们访问主页时,我们将看到“Welcome back, Joann!”信息,而不是“Please log in to continue.”,因为 is_logged_in 设置为 True。
模板继承
Jinja 允许你使用模板继承,这在多个页面共享相同布局或组件时非常有用。我们可以创建一个基础模板,然后在其他模板中重复使用,而不是重复使用共同的元素。
在本示例中,我们有一个主页和一个关于我们的页面,它们共享相同的布局,如 head, title和后面的一些样式或脚本。通过模板继承,我们可以让事情变得更简单、更有条理。
首先,我们创建基础文件。命名为base.html 。然后,添加常用元素:
{% block title %}Welcome to Flask{% endblock %} {% block content %}{% endblock %}
在此模板中有两个区块:一个用于标题,另一个用于内容。{% block %}标签允许子模板覆盖基础模板的特定部分。
现在,我们可以重写 index.html 文件来扩展 base.html 文件。我们可以删除 index.html 文件中的所有基本 HTML 结构,如 head 和 title 标记,并用 extends 标记取而代之。
{% extends 'base.html' %}
{% block title %}Welcome to Flask{% endblock %}
{% block content %}
{% if user.is_logged_in %}
Welcome back, {{ user.name }}!
{% else %}
Please log in to continue.
{% endif %}
{% endblock %}
在“关于我们 ”页面,我们也可以将其改写如下:
{% extends 'base.html' %}
{% block title %}About Us{% endblock %}
{% block content %}
This is the about page.
{% endblock %}
当我们访问主页时,如果用户已登录,就会看到信息。而在关于页面,我们会看到“This is the about page.”。这里的区别在于,这两个页面都更简洁,更易于维护,不需要重复代码。
小结
这就是我们如何使用 Jinja 在 Flask 中呈现 HTML 模板。Jinja 是一个功能强大的模板引擎,它提供了很多有用的功能和扩展,让我们可以更轻松地用 Python 构建动态 Web 应用程序。
要探索的东西还有很多,但我希望这篇文章能为您提供一个使用 Flask 的坚实起点。
免责声明
- 本站文章均为原创,除非另有说明,否则本站内容依据 CC BY-NC-SA 4.0 许可证进行授权,转载请附上出处链接及本声明,谢谢。
- 本站提供的资源(插件或主题)均为网上搜集,如有涉及或侵害到您的版权,请立即通过邮箱 admin@wpwpp.com 通知我们。
- 本站所有下载文件,仅用作学习研究使用,下载后请在 24小时内 删除。请支持正版,切勿用作商业用途。
- 因代码可变性,本站不保证兼容所有浏览器、不保证兼容所有版本的 WordPress,不保证兼容您安装的其他插件。
- 本站保证所提供资源(插件或主题)的完整性,但不含授权许可、帮助文档、XML文件、PSD、后续升级等。
- 使用该资源(插件或主题)需要用户有一定代码基础知识!本站只提供汉化及安装教程,仅供参考。由本站提供的资源对您的网站或计算机造成严重后果的,本站概不负责。
- 有时可能会遇到部分字段无法汉化,同时请保留作者汉化宣传信息,谢谢!
- 本站资源售价只是赞助和汉化辛苦费,收取费用仅维持本站的日常运营所需。
- 如果您喜欢本站资源,开通会员享受更多优惠折扣,谢谢支持!
- 如果网盘地址失效,请在相应资源页面下留言,我们会尽快修复下载地址。
- 本站网址:wpwpp.com,联系邮箱:admin@wpwpp.com。















暂无评论内容