大纲
之前的视图函数返回的都是字符串,这样是很不利于网站建设,大家都知道,我们都网页构造三大元素(html,css,js),那这些数据如何通过视图函数返回了?答案就是templates文件。
- 模板基本使用
- 变量
- 过滤器
基本使用
这里,首先我们在templates文件夹下,创建一个html文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>罗罗攀</title>
</head>
<body>
<h1>Hello</h1>
<p>这个是模板基本使用</p>
</body>
</html>
然后通过视图函数进行映射:
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/index/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
这样我们就完成了一个渲染模板的功能。
变量
当然,我们也可以传入变量到模板中,讲上面的代码进行简单修改:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>罗罗攀</title>
</head>
<body>
<h1>Hello {{ name }}</h1>
<p>这个是模板基本使用</p>
</body>
</html>
@app.route('/index/')
def index():
return render_template('index.html',name='罗罗攀')
当然,除了基本变量外,列表,字典等数据类型都是可以传入的。我们也可以在模板中定义变量:
{% set username = 'luopan' %} #全局变量
{% with username = 'luopan' %}
在里面用
{% endwith %}
过滤器
过滤器其实就是对变量的修改,具体的变量过滤器可以去Jinja2文档查看,这里简单介绍下safe,这个的作用为渲染是不转义。这里我们再传入一个变量,为<h1>world</h1>,默认情况会对h1标签转义,然后把h1当做字符串,如图。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>罗罗攀</title>
</head>
<body>
<h1>Hello {{ name }}</h1>
{{ test }}
<p>这个是模板基本使用</p>
</body>
</html>
我们加上safe过滤器,就会当做为h1标签。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>罗罗攀</title>
</head>
<body>
<h1>Hello {{ name }}</h1>
{{ test|safe }}
<p>这个是模板基本使用</p>
</body>
</html>