在Django模板中具有独特主页布局的网站

时间:2011-05-03 22:30:57

标签: html django django-templates

我正在建立一个具有独特主页设计的网站(主页的标题和徽标排列与所有其他页面不同)。但是,我希望有一个基础模板,一切都是从中继承的,以减少冗余。

-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 %}

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

如果您正在使用您所展示的内容,则需要重新编写一小部分:

而不是

{% block unique about page sidebar %}{% endblock %}

将其替换为

{% block unique %}{% endblock %}
{% block about %}{% endblock %}
{% block page %}{% endblock %}
{% block sidebar %}{% endblock %}

否则,一切看起来都应该有效。您看到的错误代码或行为是什么?