我正在建立一个具有独特主页设计的网站(主页的标题和徽标排列与所有其他页面不同)。但是,我希望有一个基础模板,一切都是从中继承的,以减少冗余。
-base.html
-basehome.html (inherits from base.html)
-basesecond.html (inherits from base.html)
-about.html (inherits from basesecond.html)
-etc...
所以base.html持有html声明和结构。 Basehome.html和basesecond.html包含不同的标题结构,网站上的各种其他页面都继承自basesecond.html。
所以我一直遇到的问题是,似乎我需要在块中放置一个块来处理明显包含(最远)子模板的主体内容。据我所知,Django不允许你这样做。
base.html文件 -
<html>
<head>
<title>Mysite</title>
</head>
<body id="{% block bodyholder %}{% endblock %}">
<div id="hd">{# start of hd #}
{% block hd %}{% endblock %}
</div>{# end of the hd #}
<div id="bd">{# start of body #}
{% block bd %}{% endblock %}
</div>{# end of body #}
</body>
</html>
basehome.html -
{% extends "base.html" %}
{% block bodyholder %}bodyhome{% endblock %}
{% block hd %}
big logo and wide header
{% endblock %}
{% block bd %}
homepage body content
this part works just like I want it to.
{% endblock %}
basesecond.html -
{% extends "base.html" %}
{% block bodyholder %}bodysecond{% endblock %}
{% block hd %}
small logo and narrow header
{% endblock %}
{% block bd %}
second page body content
here is where I want to put extra blocks like
{% block unique about page sidebar %}{% endblock %}
but it breaks the template system
{% endblock %}
解决此问题的最佳方法是什么?
答案 0 :(得分:4)
如果您正在使用您所展示的内容,则需要重新编写一小部分:
而不是
{% block unique about page sidebar %}{% endblock %}
将其替换为
{% block unique %}{% endblock %}
{% block about %}{% endblock %}
{% block page %}{% endblock %}
{% block sidebar %}{% endblock %}
否则,一切看起来都应该有效。您看到的错误代码或行为是什么?