Сайт с уникальным макетом домашней страницы в шаблонах Django - PullRequest
2 голосов
/ 04 мая 2011

Я создаю веб-сайт с уникальным дизайном домашней страницы (главная страница имеет другой заголовок и расположение логотипа, чем все остальные страницы).Однако я хотел бы иметь базовый шаблон, от которого все наследует, чтобы сократить избыточность.

-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 Ответ

4 голосов
/ 04 мая 2011

Если вы используете именно то, что показали, вам нужно переписать небольшую часть:

вместо этого

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

замените его на

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

В противном случае все выглядит так, как будто должно работать Какие коды ошибок или поведения вы видите, что вы не ожидаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...