11 Jinja2模板的内容
在Flask开发中,模板渲染是非常重要的一部分。上一篇我们讨论了“路由与视图之动态路由”,了解到如何通过动态路由来处理不同的URL请求,而本篇将深入探讨Flask中使用的Jinja2模板引擎。我们将学习如何生成模板并将其渲染到浏览器中。
什么是Jinja2?
Jinja2
是一个现代的和设计友好的Python模板引擎,它用于将变量和控制结构渲染到HTML模板中。它能够帮助开发者将逻辑和视图分开,使得Web应用更易于维护和扩展。
基础项目结构
首先,我们需要设置一个基本的Flask项目结构。假设我们的项目结构如下:
1 | my_flask_app/ |
在这个项目中,app.py
是我们的应用文件,而templates
文件夹用来存放所有的HTML模板。
创建基本的Flask应用
在app.py
文件中,我们首先需要创建一个简单的Flask应用,并设置路由,以便在浏览器中访问它。代码如下:
1 | from flask import Flask, render_template |
在这个示例中,我们创建了一个根路由/
,并调用了render_template
函数来渲染hello.html
模板。
创建Jinja2模板
接下来,我们在templates
文件夹中创建一个名为hello.html
的文件。该文件的内容如下:
1 |
|
在这个模板中,我们使用了Jinja2的变量插值语法{{ name }}
,这里的name
是从视图函数中传递过来的。
运行应用
在终端中运行以下命令,启动你的Flask应用:
1 | python app.py |
然后打开浏览器,访问http://127.0.0.1:5000/
,你应该能够看到显示“Hello World!”的页面。
Jinja2的控制结构
Jinja2不仅支持简单的变量替换,它还提供了一系列控制结构,例如条件判断和循环。这使得我们能够更灵活地渲染模板内容。
条件语句
假设我们希望根据条件显示不同的消息。我们可以在hello.html
中添加一个条件判断,如下所示:
1 | <body> |
在这个示例中,我们使用了{% if ... %}
语法来进行条件判断。
循环语句
Jinja2还支持循环,我们可以使用for
语句来遍历一组数据。例如,假设我们有一个列表要渲染:
在app.py
中,我们可以修改索引函数如下:
1 |
|
并在hello.html
中添加循环:
1 | <body> |
在浏览器中刷新页面后,你应该能够看到一个包含Flask、Django和FastAPI的列表。
总结
通过本篇教程,我们学习了如何在Flask中使用Jinja2模板引擎,生成动态的HTML内容。我们从简单的变量渲染开始,逐步引入了条件判断和循环等控制结构,使得我们的模板更加灵活和动态。
在下一篇“模板渲染之模板变量”中,我们将进一步探讨如何在模板中处理多个变量和复杂的数据结构,为我们的模板提供更多的内容和样式。希望大家能够在实际项目中灵活运用所学知识。
11 Jinja2模板的内容