zoukankan      html  css  js  c++  java
  • python---django中模板布局

    对于页面大部分一样,我们可以使用模板布局来简化

    可以查看tornado中的模板引擎,基本一致

    python---tornado模板引擎

    对于相同代码部分,我们可以提取出来,放在布局文件layout.py中

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .page-nav{
                height: 50px;
                background-color: rebeccapurple;
            }
    
            .page-content .menu{
                height: 500px;
                background-color: antiquewhite;
                float: left;
                 20%;
            }
            .page-content .content{
                height: 500px;
                background-color: cornflowerblue;
                float: left;
                 80%;
            }
            .page-bottom{
                height: 30px;
                background-color: blueviolet;
                clear: both;
            }
        </style>
    </head>
    <body>
        <div class="page-nav"></div>
        <div class="page-content">
            <div class="menu">
                <p><a href="/blog/order/">订单</a></p>
                <p><a href="/blog/shop/">购物车</a></p>
            </div>
            {% block content %}
                #此处是不同的地方,需要对应每个功能来显示
            {% endblock %}
        </div>
        <div class="page-bottom">
    
        </div>
    </body>
    </html>

    调用布局文件,进行使用:

    {% extends "base.html" %}
    
    {% block content %}
        <div class="content">
            订单
        </div>
    {%  endblock %}
    {%  extends "base.html" %}
    
    {% block content %}
    <div class="content">
        购物车
    </div>
    {% endblock %}

    对于其他js,css等文件也可以这样进行修改

    补充:可以继承父类的代码

    父类:

            {% block content %}
                <div>hahahha</div>
            {% endblock %}

    子类:

    {% extends "base.html" %}
    
    {% block content %}
        <div class="content">
            订单
        </div>
    {%  endblock %}

    其中订单会覆盖父类的div,要想两者不相互冲突,需要加上:

    {% extends "base.html" %}
    
    {% block content %}
        <div class="content">
            {{ block.super }}
            订单
        </div>
    {%  endblock %} 

    注意点:对于每个APP,我们应该将其添加到settings文件中

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'repository',
        'web',
    ]

    若是未添加,那么在APP下的视图中调用的模板中的一些功能将消失,例如block等。导致页面无法正常显示

  • 相关阅读:
    20189215 2018-2019-2 《密码与安全新技术专题》第5周作业
    2018-2019-2 20189215 《网络攻防技术》第五周作业
    Ubuntu18.04安装Openssl-1.1.1
    2018-2019-2 20189215 《网络攻防技术》第四周作业
    2018-2019-2 20189215 《网络攻防技术》第三周作业
    Python—构造单向链表数据类型
    Python—使用列表构造栈数据结构
    Python—快速排序算法
    Python—使用Json序列化Datetime类型
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/ssyfj/p/8645010.html
Copyright © 2011-2022 走看看