Форум сайта python.su
Допустим, есть базовый шаблон base.html и какой-нибудь page.html, page2.html и т.д.
Хочется иметь на всех страницах что-нибудь вроде “Привет {{ username }}, личные сообщения, погода и прочая хрень”. Через render_to_response возвращаем страницу. Если {{ username }} и прочее находится в page.html, то информация отображается корректно. Если поместить его в base.html - нет. Как правильно один раз написать это в базовом шаблоне, чтобы оно работало?
Офлайн
Здравствуйте! Попробуйте через шаблонные теги.
Django Custom Template Tags
Офлайн
Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.
Офлайн
FishHookДа, расширяет. Тогда пошёл искать ошибку.
Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.
Офлайн
Странно меня авторизует, то так, то эдак.
Офлайн
FishHookА если у приложений свои base.html в своих папках templates, то в любом случае будет использоваться расширяемый base.html того приложения, которое первым упоминается в INSTALLED_APPS и здесь только можно использовать разные имена у расширяемых шаблонов?
Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.
Отредактировано FishHook (Янв. 10, 2013 08:23:21)
Офлайн
Офлайн
Hayate
А если у приложений свои base.html в своих папках templates, то в любом случае будет использоваться расширяемый base.html того приложения, которое первым упоминается в INSTALLED_APPS и здесь только можно использовать разные имена у расширяемых шаблонов?
Офлайн
newca9hОбязательно, как с работы приду.
Почитайте это. Ссылка Извиняюсь, там не очень много написано. Лучше вот это. Ссылка
FishHookНу, опытным путём. Менял местами приложения в installed_apps и всегда для всех приложений джанго использовала base.html того приложения, которое я помещал первым. Меня самого это удивло, так ка более логичным кажется поведение при котором в первую очередь просматривается папка templates своего приложения.
Это кто Вам такое сказал?
Офлайн
Если я не ошибаюсь, то правильно было бы так:
1. В корне проекта, в каталог templates Вы помещаете шаблоны, которые будут доступны везде в проекте без указания пути. Было бы логично туда поместить базовый лайот, который расширяют все или большое количество шаблонов. Тогда Вы пишите просто {% extends “base.html” %}
2. Если Вам нужен еще шаблон, который Вы наследуете от базового, то помещаете его в каталог templates того приложения, где это нужно и в шаблонах пишете как то так
{# extra_base template, application foo, file_name foo/templates/foo/base.html #} {% extends "base.html" %}
{# view template, application foo, file_name foo/templates/foo/some.html #} {% extends "foo/base.html" %}
Отредактировано FishHook (Янв. 10, 2013 14:07:12)
Офлайн