zoukankan      html  css  js  c++  java
  • 模板继承

    在模板中,可能会遇到以下情况:

    • 多个模板具有完全相同的顶部和底部内容

    • 多个模板中具有相同的模板代码内容,但是内容中部分值不一样

    • 多个模板中具有完全相同的 html 代码块内容

    像遇到这种情况,可以使用 JinJa2 模板中的 继承 来进行实现

    模板继承是为了重用模板中的公共内容。一般Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。

     

    模板继承使用时注意点:

    1. 不支持多继承

    2. 为了便于阅读,在子模板中使用extends时,尽量写在模板的第一行。

    3. 不能在一个模板文件中定义多个相同名字的block标签。

    4. 当在页面中使用多个block标签时,建议给结束标签起个名字,当多个block嵌套时,阅读性更好。

    from flask import Flask,render_template
    
    app = Flask(__name__,  # 当前flask应用运行的模块
                template_folder="templates"
        )
    
    @app.route("/")
    def index():
        data = {}
        return render_template( "index6.html", **data )
    
    if __name__ == '__main__':
        app.run(debug=True)
    #index6.html
    {% extends "base.html" %}
    {% block title %}来自子模板的标题{% endblock title %}
    {% block hander %}
        <script>
        alert(1)
        </script>
    {% endblock hander %}
    
    {% block content %}
        {{ super() }}
        <p>子模板的内容</p>
        {{ super() }}
    {% endblock %}
    #bases.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}父级模板的内容{% endblock %}</title>
        {% block hander %}{% endblock hander %}
    </head>
    <body>
        {% block content %}
            <p>父级模板的content</p>
        {% endblock content %}
    </body>
    </html>
  • 相关阅读:
    2008新的一年到来了!
    WPF 回车转Tab实现跳转
    Remoting和WebService/Ref, Out, Params的区别/
    教你如何编写游戏外挂
    在表达式中使用内置报表函数和聚合函数 (Reporting Services)
    Facade模式
    十分经典的批处理教程
    Entity Framework(实体框架)之详解 Linq To Entities 之一 (经典收集自用)
    关于AppDomain 创建实例进行程序集之间的通讯问题
    OPENQUERY用法
  • 原文地址:https://www.cnblogs.com/zhangjiahao996/p/14021807.html
Copyright © 2011-2022 走看看