Правильный метод наследования шаблонов Django для контента <head> - PullRequest
5 голосов
/ 14 декабря 2011

У меня есть шаблон base.html с тегами sitewide для charset, google-site-проверкой, таблицами стилей, js .... Мне также нужно настроить блоки для тегов заголовков страниц и мета-описаний.

Мне интересно, должен ли я установить {% block head%} в моем base.html и в моих унаследованных шаблонных тегах mix в этом блоке, или я должен установить определенные блоки, такие как {% block meta%} и {% block title%}, чтобы теги появлялись на своих местах, когда Django отображает html.

Имеет ли это смысл?Если я просматриваю исходный код со всеми тегами, смешанными в одном {% block head%}, то вещи немного не в порядке, но если я добавляю конкретные блоки для каждого тега, они в порядке, но используют гораздо больше кода ...?

1 Ответ

5 голосов
/ 14 декабря 2011

У меня обычно три блока.Эти трое покрыли все мои потребности и потребности моего коллеги за последние 1,5 года: -)

  • Блок для css.

  • Блок дляjavascript.

  • Блок, называемый «head-extras».Часто вы хотите сделать что-то особенное для каждой страницы, например, добавить элемент ссылки, который указывает на ваш RSS-канал.Или какой-нибудь встроенный фрагмент JavaScript.С помощью этого блока вы разрешаете эти угловые случаи понятным способом.

В шаблонах, расширяющих базовый шаблон, вы можете использовать {{ super }} в блоках css и javascript, чтобы получить "список родителей и дополните его своим собственным.

У меня также есть блок головы вокруг всего этого для тех немногих случаев, когда вы просто хотите переопределить все в голове: -)

...