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&