Django 实现子模版继承父模板

背景

Django的占位符,如果不继承父模板的内容,会被子模版所覆盖,有些业务场景子模版也需要使用到父模板中的内容

可以使用Django自带的标签{% block super %}来实现此效果

base.html

最基础html,相当于第一层html,block js 进行占位

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <!-- head content -->
</head>
<body>
    <!-- body content -->

    {% block js %}
    <!-- base js content -->
    <script src="base.js"></script>
    {% endblock %}
</body>
</html>

middle.html

中间html,相当于第二层html,在block js 中继承了base.html的内容

html 复制代码
{% extends "base.html" %}

{% block js %}
    {{ block.super }}
    <!-- middle js content -->
    <script src="middle.js"></script>
{% endblock %}

child.html

孩子html,相当于第三层html,在block js 中继承了middle.html的内容

html 复制代码
{% extends "middle.html" %}

{% block js %}
    {{ block.super }}
    <!-- child js content -->
    <script src="child.js"></script>
{% endblock %}

最终渲染的效果

最终能够包含所有被继承中所引入的js文件,而不是被最后一个覆盖

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <!-- head content -->
</head>
<body>
    <!-- body content -->

    <!-- base js content -->
    <script src="base.js"></script>
    <!-- middle js content -->
    <script src="middle.js"></script>
    <!-- child js content -->
    <script src="child.js"></script>
</body>
</html>
相关推荐
内存不泄露9 小时前
基于Django和Vue3的文件分享平台设计与实现
后端·python·django
贾宝玉的玉宝贾10 小时前
FreeSWITCH 简单图形化界面52 - 拨号应用 Answer 介绍
python·django·voip·freeswitch·sip·ippbx·jssip
云和数据.ChenGuang10 小时前
fastapi flask django区别
人工智能·python·django·flask·fastapi
xj75730653310 小时前
《精通Django》 第五章 Django管理后台
数据库·django·sqlite
xj7573065331 天前
《精通Django》 第4章 Django模型
数据库·oracle·django
旦沐已成舟1 天前
Django的学习之路~
python·django
哈里谢顿2 天前
django的db性能调优
django
luoluoal2 天前
基于python的二维码生成算法研究和实现(源码+文档)
python·mysql·django·毕业设计·源码
有梦想的攻城狮2 天前
Django使用介绍
后端·python·django
xj7573065332 天前
《精通Django》 第三章 Django模板
数据库·django·sqlite