Django 模板继承

模板继承的使用场景是,你写好了一个“骨架”模板后,可以在子模板引用父模板,并替换或修改父模板的某些部分。

举个例子,我们定义一个显示图书信息的父模板,命名为 base.html

<html>
<body>
    <h4>图书信息</h4>

    <p>书名:{% block title %}书名(请自定义){% endblock %}</p>

    <p>作者:{% block author %}作者名(请自定义){% endblock %}</p>
    
</body>
</html>

然后创建一个子模板,在子模板引用 base.html

<html>
<body>
    {% extends "base.html" %}

    {% block title %}红楼梦{% endblock %}
    {% block author %}曹雪芹{% endblock %}
</body>
</html>

extends 标签的作用是,告诉模版引擎本模版继承了 base.html 作为父模板。

这时候我们的页面变成了:

block 标签的部分已经被自定义的内容替换掉了。如果不填写自定义的内容,将会继续使用父模板中的内容。

如果需要获取父模板中的 block 的内容,可以使用 {{ block.super }} 变量。如果你想要在父模板 block 中新增内容而不是完全覆盖它,它将非常有用。

{{ block.super }} 获取父模板 block 内容:

<html>
<body>
    {% extends "base.html" %}

    {% block title %}红楼梦{% endblock %}
    {% block author %} {{ block.super }} {% endblock %}

</body>
</html>

给父模板 block 增加新内容:

<html>
<body>
    {% extends "base.html" %}

    {% block title %}红楼梦{% endblock %}
    {% block author %} {{ block.super }}新增加的内容 {% endblock %}

</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Templa...
    lkning阅读 837评论 0 0
  • 声明:转载请注明出处http://www.jianshu.com/p/1664dcfd840c 最近在折腾Djan...
    蛇发女妖阅读 6,319评论 1 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • Django模版引擎中最强大也是最复杂的部分就是模版继承了。模版继承可以让您创建一个基本的“骨架”模版,它包含您站...
    马小跳_阅读 745评论 0 1
  • 第二章:视图和URL 2.1第一个Django驱动的页面 页面的内容由视图函数(view function)生成,...
    m风满楼阅读 1,032评论 0 12