Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » На всех страницах выводить блок с одним и тем же содержимым [RSS Feed]

#1 Окт. 7, 2014 14:23:10

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

На всех страницах выводить блок с одним и тем же содержимым

Доброго времени суток!

Не могу сообразить как подобное реализовывается в Джанго.
Есть базовый шаблон, в его разметке есть место куда необходимо выводить определенные данные из БД (в моем примере это футбольные матчи, которые по дате ближайшие к текущему дню), т.е. в данный момент времени на всех страницах эти данные будут одни и те же. Ни в каждой же вьюхе передовать еще и эти данные.

P.S. Django только изучаю (около месяца)

Офлайн

#2 Окт. 7, 2014 17:33:32

Rusich
Зарегистрирован: 2014-09-29
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

На всех страницах выводить блок с одним и тем же содержимым

context proccesor
{% include %} in templates
inclusion-tags -> https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags

Офлайн

#3 Окт. 8, 2014 10:12:38

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

На всех страницах выводить блок с одним и тем же содержимым

Правильно ли я понял:
я создаю шаблон для тэга, , ну что-то типа такого
#results.html

    {% for result in res_match %}
        <div>{{ result.datetime }}</div>
        <div>{{ result.home }}  {{result.home_g }} : {{ result.guest_g }}  {{ result.guest }}
            
    {% endfor %}

Сам тег
#results.py
from django.core import template  
register=template.Library()
@register.inclusion_tag('results.html')
def results():
    ........
    return {'res_match': ......}
а в базовом шаблоне, в указанном месте пишу {% results %}
Все ли верно?

Отредактировано tol_drew (Окт. 8, 2014 10:36:58)

Офлайн

#4 Окт. 8, 2014 18:18:08

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

На всех страницах выводить блок с одним и тем же содержимым

Тут есть все, что вам нужно http://djbook.ru/rel1.6/howto/custom-template-tags.html
Можно еще так вставлять (только res_match придется от каждой вьюхи передавать):

{% include "results.html" %}

Офлайн

#5 Окт. 8, 2014 20:56:46

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

На всех страницах выводить блок с одним и тем же содержимым

Офлайн

#6 Окт. 9, 2014 04:46:29

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

На всех страницах выводить блок с одним и тем же содержимым

сделал так как описал выше, но ничего не выводится. Есть подозрение, что не верно указан путь до шаблона тега.
У меня такая структура каталогов
mysite
–templates
—- index.html (базовый шаблон)
—- results.html (шаблон тега)
—- другие шаблоны
–futsal
—- файлы приложения: модели, вьюхи и т.п.
—- templatetags
—— __init__.py
—— result.py

Каким должен быть путь тут:

# results.py
@register.inclusion_tag('results.html')
def results():

Офлайн

#7 Окт. 9, 2014 09:19:01

tol_drew
Зарегистрирован: 2014-09-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

На всех страницах выводить блок с одним и тем же содержимым

Разобрался забыл вызвать {% load results %}

Офлайн

  • Начало
  • » Django
  • » На всех страницах выводить блок с одним и тем же содержимым[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version