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 %}
posted @ 2019-06-19 17:09  JeffreyDin  阅读(135)  评论(0编辑  收藏  举报