Найти - Пользователи
Полная версия: Передача контекста в базовый шаблон
Начало » Django » Передача контекста в базовый шаблон
1
S
Допустим, есть базовый шаблон base.html и какой-нибудь page.html, page2.html и т.д.
Хочется иметь на всех страницах что-нибудь вроде “Привет {{ username }}, личные сообщения, погода и прочая хрень”. Через render_to_response возвращаем страницу. Если {{ username }} и прочее находится в page.html, то информация отображается корректно. Если поместить его в base.html - нет. Как правильно один раз написать это в базовом шаблоне, чтобы оно работало?
newca9h
Здравствуйте! Попробуйте через шаблонные теги.

Django Custom Template Tags
FishHook
Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.
Hayate
FishHook
Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.
Да, расширяет. Тогда пошёл искать ошибку.
Hayate
Странно меня авторизует, то так, то эдак.
Hayate
FishHook
Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.
А если у приложений свои base.html в своих папках templates, то в любом случае будет использоваться расширяемый base.html того приложения, которое первым упоминается в INSTALLED_APPS и здесь только можно использовать разные имена у расширяемых шаблонов?

newca9h
Почитайте это. Ссылка Извиняюсь, там не очень много написано. Лучше вот это. Ссылка
FishHook
Hayate
А если у приложений свои base.html в своих папках templates, то в любом случае будет использоваться расширяемый base.html того приложения, которое первым упоминается в INSTALLED_APPS и здесь только можно использовать разные имена у расширяемых шаблонов?

Это кто Вам такое сказал?
S
newca9h
Почитайте это. Ссылка Извиняюсь, там не очень много написано. Лучше вот это. Ссылка
Обязательно, как с работы приду.

FishHook
Это кто Вам такое сказал?
Ну, опытным путём. Менял местами приложения в installed_apps и всегда для всех приложений джанго использовала base.html того приложения, которое я помещал первым. Меня самого это удивло, так ка более логичным кажется поведение при котором в первую очередь просматривается папка templates своего приложения.
FishHook
Если я не ошибаюсь, то правильно было бы так:
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" %}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB