📜  使用 render_template 渲染的 TML 文件 (1)

📅  最后修改于: 2023-12-03 15:06:50.874000             🧑  作者: Mango

使用 render_template 渲染的 HTML 文件

在 Flask 中,可以使用 render_template 函数来渲染 HTML 文件。该函数会查找指定的 HTML 文件,并返回其内容供浏览器显示。

前提条件

在使用 render_template 函数之前,需要确保已经安装并配置了 Flask 框架。同时,在 Flask 程序的根目录下,需要创建一个名为 templates 的目录,用于存放 HTML 文件。在这个目录下可以创建任意数量的子目录和 HTML 文件。

使用方法

要使用 render_template 函数渲染 HTML 文件,首先需要导入它:

from flask import render_template

然后,在 Flask 程序中的一个路由函数中调用该函数,指定要渲染的 HTML 文件名即可:

@app.route("/")
def index():
    return render_template("index.html")

该示例代码中,使用了 Flask 的装饰器 @app.route 来定义了一个路由函数,该函数绑定了网站的根目录 /,当用户访问网站时将会自动调用该函数。函数中使用了 render_template 函数,指定要渲染的 HTML 文件名为 index.html。

模板变量

除了简单地渲染 HTML 文件外,还可以向渲染的 HTML 文件中传递参数,以实现更加灵活的页面生成。在 Flask 中,使用 render_template 函数时,可以将参数作为关键字参数传递到函数中。

例如,以下代码将会将名为 name 的字符串参数传递到 index.html 中:

@app.route("/")
def index():
    return render_template("index.html", name="world")

在 HTML 文件中可以通过以下方式使用该参数:

<html>
  <head>
    <title>Hello, {{ name }}!</title>
  </head>
  <body>
    <h1>Hello, {{ name }}!</h1>
  </body>
</html>

该示例代码中,使用了 Flask 的模板引擎 Jinja2 的语法,在 HTML 文件中使用双大括号 {{ }} 包裹模板变量 name。在生成 HTML 文件时,Jinja2 引擎会将模板变量替换为对应的值。

条件语句和循环语句

Flask 的模板引擎 Jinja2 还支持使用条件语句和循环语句来生成动态页面。例如,以下代码将会根据列表 posts 中的元素生成一个列表:

@app.route("/")
def index():
    posts = [
        {"title": "Post 1", "content": "Hello, world!"},
        {"title": "Post 2", "content": "Goodbye, world!"},
    ]
    return render_template("index.html", posts=posts)

在 HTML 文件中可以使用以下代码使用 for 循环语句遍历 posts 列表中的元素:

<ul>
{% for post in posts %}
  <li><h2>{{ post.title }}</h2>{{ post.content }}</li>
{% endfor %}
</ul>

该示例代码中,使用了 Jinja2 的 for 循环语句,在 HTML 文件中使用 {% for %} 和 {% endfor %} 包裹循环语句。循环中使用变量 post 来代表当前遍历到的元素,可以通过 post.title 和 post.content 访问元素的属性。在生成 HTML 文件时,Jinja2 引擎会将循环语句生成对应的 HTML 代码。

总结

render_template 函数是 Flask 中一个非常重要的函数,可以让程序员灵活地生成网站的 HTML 文件。渲染出来的页面可以通过参数、条件语句和循环语句等方式动态生成,非常适合制作动态网站。