Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2013 17:52:40

S
Зарегистрирован: 2012-04-25
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

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

Офлайн

#2 Янв. 9, 2013 18:29:19

newca9h
Зарегистрирован: 2012-05-28
Сообщения: 46
Репутация: +  3  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

Здравствуйте! Попробуйте через шаблонные теги.

Django Custom Template Tags

Офлайн

#3 Янв. 9, 2013 18:33:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.



Офлайн

#4 Янв. 9, 2013 18:52:55

Hayate
От:
Зарегистрирован: 2010-10-15
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

FishHook
Если шаблоны расширяют базовый шаблон, т.е {% extends “base.html” %}, то контекст должен быть доступен везде, и в базовом и в расширяющем.
Да, расширяет. Тогда пошёл искать ошибку.



Офлайн

#5 Янв. 9, 2013 18:53:33

Hayate
От:
Зарегистрирован: 2010-10-15
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

Странно меня авторизует, то так, то эдак.



Офлайн

#6 Янв. 9, 2013 19:30:25

Hayate
От:
Зарегистрирован: 2010-10-15
Сообщения: 34
Репутация: +  1  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

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



Отредактировано FishHook (Янв. 10, 2013 08:23:21)

Офлайн

#7 Янв. 9, 2013 19:34:03

newca9h
Зарегистрирован: 2012-05-28
Сообщения: 46
Репутация: +  3  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

Почитайте это. Ссылка Извиняюсь, там не очень много написано. Лучше вот это. Ссылка

Отредактировано newca9h (Янв. 9, 2013 19:37:21)

Офлайн

#8 Янв. 10, 2013 08:23:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

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

Это кто Вам такое сказал?



Офлайн

#9 Янв. 10, 2013 10:19:47

S
Зарегистрирован: 2012-04-25
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

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

FishHook
Это кто Вам такое сказал?
Ну, опытным путём. Менял местами приложения в installed_apps и всегда для всех приложений джанго использовала base.html того приложения, которое я помещал первым. Меня самого это удивло, так ка более логичным кажется поведение при котором в первую очередь просматривается папка templates своего приложения.

Офлайн

#10 Янв. 10, 2013 14:05:09

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Передача контекста в базовый шаблон

Если я не ошибаюсь, то правильно было бы так:
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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version