Помещение блока внутри другого в Джанго - PullRequest
4 голосов
/ 13 марта 2010

У меня есть шаблон Django, который я хочу расширить в нескольких местах.В некоторых div должен быть внутри формы, а в других не должно быть.Для этого я поместил блок выше и ниже div, чтобы я мог добавить и в них соответственно.

Желаемый:

<form>
<div class="my_div">
  {% block div_content %}
    ...
  {% endblock %}
</div>
</form>

Шаблон:

{% block div_top %}{% endblock %}
<div class="my_div">
  {% block div_content %}
  {% endblock %}
</div>
{% block div_bottom %}{% endblock %}

Lookingв этом я не могу не думать, что есть лучший способ сделать это.Какой стандартный способ Django сделать это?

1 Ответ

8 голосов
/ 13 марта 2010

Использование нескольких базовых шаблонов - это решение, которое я видел в нескольких командах. Например, вы можете просто добавить дополнительный базовый шаблон с именем «base_with_form.html». Шаблоны, которым нужна форма, расширяют этот базовый шаблон.

Одна вещь, которая помогла мне, - подумать о разметке каталогов шаблонов способом, аналогичным пакетам Python. Я обычно включаю base.html для каждого каталога (ala init .py), даже если это просто заполнитель. Каждый базовый файл расширяет базовый файл в своем родительском каталоге. Дополнительные специализации стилей для нескольких шаблонов в одном каталоге выполняются путем добавления копий локального base.html с необходимыми изменениями.

Ex:

templates/
  base.html
  index.html (extends "base.html")
  accounts/
    base.html (extends "base.html")
    affiliate_base.html (extends "base.html")
    my_account.html (extends "accounts/base.html")
    affiliate_dashboard.html (extends "accounts/affiliate_base.html")
    vips/
      base.html (extend "accounts/base.html")
      vip_lounge.html (extends "accounts/vips/base.html")
...