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

      为了在Django模板配置中减少代码的冗余,需使用模板继承

    1. 语法

    {% block classinfo %}
    {% endblock}

    2. 步骤

    (1)创建一个base.html把需要显示的页面内容写在里面

    (2)在title部分写个盒子,以后谁来扩展就在这里面添加相应的内容,即完成title.html

    <title>
        {% block title %}
        {% endblock %}
    </title>

    (3)创建一个title.html,让title.html继承base.html

    {%extends "base.html"%} #必须放在首行

      继续添加内容:

    {%block title%}blog titles{%endblock%}

    (4)也可以分别在base.html或title.html中写好多盒子,方法同上

    {%load staticfiles%}
    <!DOCTYPE html>
    <html lang="zh-cn">
        <head>
            <meta http-equiv="X-UA_compatible" content="IE=Edge">
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <title>
                {%block title%}
                {%endblock%}
            </title>
            <link rel="stylesheet" href="{% static 'css/bootstrap.css'%}">
        </head>
        <body>
            {%include 'header.html'%}
            <div class="container">
                {%block content%}
                {%endblock%}
            </div>
            {%include 'footer.html'%}
            {% block javascritp%}{%endblock%}
        </body>
    </html>
    注意:盒子里面可以又默认的内容,如果又默认的时候你不扩展就走默认的,如果你扩展了,就替换了,如果要实现不替换直接在后面追加的话,可以使用{% block.super%}方法
    {% block menu %}
      {{ block.super }}
      <p>!!!</p>       #先继承父类的,后插入数据
    {% endblock %}

    3. 总结

    (1)模板继承围绕两点:继承和扩展,有什么继承什么,扩展的是盒子

    (2)模板中设置的盒子越多越好,因为这样你想扩展的时候就扩展,不想扩展的时候就不扩展了

    (3)为了更好的可读性,你也可以给你的{% endblock %}标签一个名字,例如:

    {% block content %}
    ...
    {% endblock content %} 

    (4)不能在一个模板中使用多个相同名字的block标签

  • 相关阅读:
    IE下JS文件失效问题总结
    什么是RFC?
    CHROME对CSS的解析
    php_network_getaddresses: getaddrinfo failed
    Fedora10下配置Apache和虚拟主机
    Apache的Charset设置
    网页设计中的面包屑路径
    利用JS实现的根据经纬度计算地球上两点之间的距离
    【OpenCV学习】子矩阵操作
    【OpenCV学习】ROI区域
  • 原文地址:https://www.cnblogs.com/xiaobingqianrui/p/9888688.html
Copyright © 2011-2022 走看看