1、html模板
<html>
<head>
<title>{{title}} - microblog</title>
</head>
<body>
<h1>Hello, {{user.nickname}}!</h1>
</body>
</html>
{{}}中存放动态内容,可以从视图函数中传入。
2、视图函数中使用html模板
为了渲染模板,Flask框架提供了名为render_template的新函数,该函数需要传入模板名以及一些模板参数的变量列表,返回一个所有占位符都被传入的变量替换的字符串结构。用模板参数提供的相应值替换{{…}}
def index():
user = { 'nickname': 'Miguel' } # 定义变量
return render_template("index.html",
title = 'Home',
user = user)#传入模板名、模板变量列表
3、模板中的条件、循环、继承语句
3.1条件控制:
<html>
<head>
{% if title %}
<title>{{title}} - microblog</title>
{% else %}
<title>Welcome to microblog</title>
{% endif %}
</head>
<body>
<h1>Hello, {{user.nickname}}!</h1>
</body>
</html>
3.2循环控制:
<html>
<head>
{% if title %}
<title>{{title}} - microblog</title>
{% else %}
<title>microblog</title>
{% endif %}
</head>
<body>
<h1>Hi, {{user.nickname}}!</h1>
{% for post in posts %}
<p>{{post.author.nickname}} says: <b>{{post.body}}</b></p>
{% endfor %}
</body>
</html>
3.3模板继承:
把所有模板公共的部分移除出页面的布局,把它们放在一个基础模板中,所有使用它的模板可以继承该基础模板。
基础模板:(base.html)
<html>
<head>
{% if title %}
<title>{{title}} - microblog</title>
{% else %}
<title>microblog</title>
{% endif %}
</head>
<body>
<div>Microblog: <a href="/index">Home</a></div>#设置导航窗口
<hr>
{% block content %}{% endblock %}
</body>
</html>
使用 block 控制语句来定义派生模板content可以插入的位置,
继承模板:(index.html)
{% extends "base.html" %}
{% block content %}
<h1>Hi, {{user.nickname}}!</h1>
{% for post in posts %}
<div><p>{{post.author.nickname}} says: <b>{{post.body}}</b></p></div>
{% endfor %}
{% endblock %}
使用extends 语句建立两个模板的继承关系。