Flask模板
Flask模板继承
解决前端页面中相同模块同步、重复写的问题,Jinja2模板继承特性,将所有模板中相同的部分转移到一个基础模板中,然后再从它继承过来,避免诸多HTML模板上保留同样的代码和繁琐的工作。
定义一个名为base.html(app/templates/base.html)的基本模板,其中包含一个简单的导航栏,保证每一个页面的导航栏都能同步
<!DOCTYPE html>
<html lang="en">
<head>
{% if title %}
<meta charset="UTF-8">
<title>{{ title }} - microblog - GXS</title>
{% else %}
<title>Welcome to microblog! </title>
{% endif %}
</head>
{# 导航栏代码 #}
<body>
<div>microblog - GXS:
<a href="/index">Home</a>
{# 写入需要引用公共模块的.html文件 #}
</div>
<hr>
{% block content %}{% endblock %}
</body>
</html>
在这个模板中,使用block控制语句来定义派生模板可以插入代码的位置。 block被赋予一个唯一的名称,派生的模板可以在提供其内容时进行引用。
简化的index.html(app/templates/index.html)如下:
{% extends "base.html" %}
{% block content %}
<h1>Hi, {{ user.username }}!</h1>
{% for post in posts %}
<div><p>{{ post.author.username }} says: <b>{{ post.body }}</b></p></div>
{% endfor %}
{% endblock %}