Bootstrap

Flask 框架学习_4(Jinja模板引入+模板传参)

flask 模板简介

模板是包含静态数据以及动态数据占位符的文件。使用特定数据呈现模板以生成最终文档。Flask 使用Jinja模板库来渲染模板。

在您的应用程序中,您将使用模板来呈现将显示在用户浏览器中的HTML 。
在 Flask 中,Jinja 被配置为自动转义HTML 模板中呈现的任何数据。这意味着呈现给用户输入是安全的;他们输入的任何可能与 HTML 混淆的字符,例如输入<并且>将使用在浏览器中看起来相同(不会被转译为html代码), 不会造成不良影响的安全值进行转义

示例: 一段html代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML基础</title>
</head>

<body>
    <h1>我是标题</h1>
    <hr>
    <dl>
        <dt>历史</dt>
        <dd>秦汉</dd>
        <dd>隋唐</dd>
    </dl>
</body>

</html>

直接运行上面代码显示如下:
在这里插入图片描述

  • 现在我们调用函数返回
from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return """
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML基础</title>
</head>

<body>
    <h1>我是标题</h1>
    <hr>
    <dl>
        <dt>历史</dt>
        <dd>秦汉</dd>
        <dd>隋唐</dd>
    </dl>
</body>

</html>
"""


if __name__ == '__main__':
    app.run(debug=True)

可以看到前端是可以正常解析html的,但是代码看起来很臃肿,不利于前后端分离,给程序的开发带来了很大的影响。

解决办法:
在程序开发过程中我们应该将html代码剥离出来,通常我们会将代码放到templates目录中,在通过render_template()方法来渲染模板。

示例:
在项目目录下创建templates目录,templates目录下创建index.html
在这里插入图片描述
index.html文件中写入:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML基础</title>
</head>

<body>
    <h1&
;