背景
Django的占位符,如果不繼承父模板的內容,會被子模版所覆蓋,有些業務場景子模版也需要使用到父模板中的內容
可以使用Django自帶的標簽{% block super %}來實現此效果
base.html
最基礎html,相當于第一層html,block js 進行占位
<!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的內容
{% extends "base.html" %}{% block js %}{{ block.super }}<!-- middle js content --><script src="middle.js"></script>
{% endblock %}
child.html
孩子html,相當于第三層html,在block js 中繼承了middle.html的內容
{% extends "middle.html" %}{% block js %}{{ block.super }}<!-- child js content --><script src="child.js"></script>
{% endblock %}
最終渲染的效果
最終能夠包含所有被繼承中所引入的js文件,而不是被最后一個覆蓋
<!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>