zoukankan      html  css  js  c++  java
  • flask模版继承和block

    模版继承和block的目的就是为了减少前端代码量

    flask_ones.py

    #encoding:utf-8
    from flask import Flask,url_for,redirect,render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    @app.route('/login/')
    def login():
        return render_template('login.html')
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    html文件

    #################### index.html ##################
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .nav{
                background:rebeccapurple;
                height:65px;
            }
            ul{
                overflow: hidden;
            }
            ul li{
                float: left;
                list-style: none;
    
                padding:0 10px;
                line-height: 65px;
            }
    
            ul li a{
                color: white;
            }
        </style>
    </head>
    <body>
        <div class="nav">
            <ul>
                <li><a href="#">首页</a></li>
                <li><a href="#">发布问答</a></li>
            </ul>
        </div>
        <h1>这是index页面</h1>
    </body>
    </html>
    
    #####################login.html###################
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登陆页面</title> <style> .nav{ background:rebeccapurple; height:65px; } ul{ overflow: hidden; } ul li{ float: left; list-style: none; padding:0 10px; line-height: 65px; } ul li a{ color: white; } </style> </head> <body> <div class="nav"> <ul> <li><a href="#">首页</a></li> <li><a href="#">发布问答</a></li> </ul> </div>
       <h1>这是login页面</h1>
    </body>
    </html>

    对比index.html和login.html的代码发现,除了红色的代码部分,其余代码均一样,而如果有其他更多类似的页面,会加大代码的量,因此引出以下的模版继承和block

    语法:

    {% extends "base.html" %}
    
    {% block name %}
        ....
    {% endblock %}

    所以以上代码简化为:

    同级目录新建一个common.html,将相同的代码部分通过继承带进去,如下:

    common.html(公共代码部分)

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    .nav{
    background:rebeccapurple;
    height:65px;
    }
    ul{
    overflow: hidden;
    }
    ul li{
    float: left;
    list-style: none;

    padding:0 10px;
    line-height: 65px;
    }

    ul li a{
    color: white;
    }
    </style>
    </head>
    <body>
    <div class="nav">
    <ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">发布问答</a></li>
    </ul>
    </div>
    {% block main %}

    {% endblock %}

    </body>
    </html>

    此时index.html和login.html代码为:

    #index.html
    {% extends "base.html" %}      #代表继承base.html
    
    {% block main %}                #这里的main要与base.html里blcok的设定的名字相同  
        <h1>这是index页面</h1>           #将这里的内容传到base.html的block下,并在本文件里应用
    {% endblock %}
    

    #login.html {% extends "base.html" %} {% block main %}
    <h1>这是登陆页面</h1> {% endblock %}

  • 相关阅读:
    第一周JAVA基本概念
    Visual Studio 2008 附加进程调试
    .NET错误提示之:ConnectionString尚未初始化
    .NET知识点总结
    JS脚本的基础应用
    错误提示之:无法分析从服务器收到的消息。
    客户端和服务端之间的通信(TCP)
    错误提示之:sqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
    错误提示之:DataTable已属于另一个DataSet。
    错误提示之:INSERT 语句与 COLUMN FOREIGN KEY 约束 'FK_CCRM_Service_CCRM_Userlist' 冲突。
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8443335.html
Copyright © 2011-2022 走看看