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

      模板继承可以让您创建一个基本的“骨架”模板,它包含您站点中的全部元素,并且可以定义能够被子模板覆盖的blocks

      base.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>blog</title>
        <script src="/static/js/jquery-3.2.1.min.js"></script>
        <script src="/static/bs/js/bootstrap.min.js"></script>   
    </head>
    <body>
    <div class="row" style="background-color:#5ea2d636 "><div class="col-md-1"></div><div class="col-md-10" style="background-color: white" id="text">
        <div class="header" >
        <p class="title"><a id='myfont' href="/blog/{{ username }}">{{ blog.title }}</a></p>
    </div>
        <div class="container-fluid">
        <div class="row">
            <div class="col-sm-9">
                {% block content %}
    {% endblock %}
    </div> </div> </div> </div><div class="col-md-1"></div> </div> </body> </html>

       这个base.html模板,它定义了一个简单HTML骨架,“子模板”的工作是用它们的内容填充空的blocks。block告诉模板引擎字模板可能会覆盖掉模板中的这些位置。

      子模板

    {% extends "base.html" %}
    {% block content %}
    
        <div>
            <h1>发表评论</h1>
            <span>评论人</span>
            <span>评论时间</span>
            <span>评论内容</span>
        </div>
        
    {% endblock %}

       extends标签是这里的关键。它告诉模板引擎,这个模板继承了另一个模板。当模板系统处理这个模板时,首先,它将定位父模板,在此例中,就是“base.html”。

    父模板的{% block %}标签中的内容总是被用作备选内容(fallback)

      这种方式使代码得到最大程度的复用,并且使得添加内容到共享的内容区域更加简单,例如部分范围内的导航

      使用模板继承时需注意:

      如果你在模板中使用{%  extends %}标签,它必须是模板中的第一个标签,其他的任何情况下,模板继承都无法工作;

      在base模板中设置越多的{% block %}标签越好。子模板不必定义全部父模板中的blocks,所以,您可以在大多数blocks中填充合理的默认内容。然后,只定义你需要的那一个,多一点钩子总比少一点好;

      如果你发现你自己在大量的模板中复制内容,那可能意味着你应该把内容移动到父模板中的一个{% block %}中;

      为了更好的可读性,你也可以给你的{% endblock %}标签一个名字,在大型模板中,这个方法可以帮你清楚的看到哪一个{% block %}标签被关闭了

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

      最后,请注意您并不能在一个模板中定义多个相同名字的block标签,这个限制的存在是因为block标签的作用是双向的,这个意思是:block标签不仅提供了一个坑去填,它还在父模板中定义了填坑的内容。如果在一个模板中有两个名字一样的block标签,模板的父模板将不知道使用哪个block的内容

      

  • 相关阅读:
    flash中网页跳转总结
    as3自定义事件
    mouseChildren启示
    flash拖动条移出flash无法拖动
    需要一个策略文件,但在加载此媒体时未设置checkPolicyFile标志
    Teach Yourself SQL in 10 Minutes
    电子书本地转换软件 Calibre
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes – Page 31 练习
  • 原文地址:https://www.cnblogs.com/iamluoli/p/9083453.html
Copyright © 2011-2022 走看看