• 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标签

  • 相关阅读:
    codeforces 652B z-sort(思维)
    poj 3268 Silver Cow Party(最短路)
    POJ 2243:Knight Moves(BFS)
    POJ 1107:W's Cipher(模拟)
    POJ 1008 Maya Calendar(模拟)
    Hdu3436-Queue-jumpers(伸展树)
    主席树的另一种写法
    Hdu5785-Interesting(回文串处理)
    Hdu5008-Boring String Problem(后缀数组)
    RMQ模板
  • 原文地址:https://www.cnblogs.com/xiaobingqianrui/p/9888688.html
Copyright © 2020-2023  润新知