推荐答案
在 Flask 中使用模板通常涉及以下步骤:
创建模板文件夹:在项目根目录下创建一个名为
templates的文件夹,用于存放 HTML 模板文件。渲染模板:在视图函数中使用
render_template函数来渲染模板并返回给客户端。传递变量:可以通过
render_template函数的参数将变量传递给模板。模板继承:使用 Jinja2 模板引擎的继承功能,创建基础模板并在子模板中扩展。
示例代码:
// www.javascriptcn.com code example
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
user = {'username': 'John'}
return render_template('index.html', title='Home', user=user)
if __name__ == '__main__':
app.run(debug=True)在 templates/index.html 文件中:
// www.javascriptcn.com code example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>Hello, {{ user.username }}!</h1>
</body>
</html>本题详细解读
1. 模板文件夹
Flask 默认会在项目根目录下寻找名为 templates 的文件夹来存放模板文件。你可以通过 template_folder 参数指定其他文件夹路径,但通常不建议这样做。
2. 渲染模板
render_template 是 Flask 提供的一个函数,用于渲染模板并生成 HTML 响应。它接受模板文件名作为第一个参数,并可以传递任意数量的关键字参数作为模板变量。
3. 传递变量
在视图函数中,你可以通过 render_template 函数的参数将变量传递给模板。这些变量可以在模板中使用 Jinja2 语法进行渲染。
4. 模板继承
Jinja2 模板引擎支持模板继承,允许你创建一个基础模板(如 base.html),并在子模板中扩展它。这样可以避免重复代码,提高代码的可维护性。
示例基础模板 base.html:
// www.javascriptcn.com code example
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
</head>
<body>
<header>
<h1>My Website</h1>
</header>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>子模板 index.html:
// www.javascriptcn.com code example
{% extends "base.html" %}
{% block title %}
{{ title }}
{% endblock %}
{% block content %}
<h1>Hello, {{ user.username }}!</h1>
{% endblock %}通过这种方式,你可以在多个页面中共享相同的 HTML 结构,同时保持内容的灵活性。