Уведомления

Группа в Telegram: @pythonsu

#1 Март 18, 2016 08:47:33

PavelIvanov
Зарегистрирован: 2015-09-21
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Request в templates tag

Гугл говорит, что Request лежит в Context. Регистрирую тэг с параметрами takes_context=True, но Request'а там все равно нет. Смысл в том, что есть повторяющийся элемент (предположим последние новости) и его нужно выводит на страницах шаблона. Но в этом тэге нужно брать значения из сессии. Может все вообще делается иначе и я изобретаю велосипед?

Офлайн

#2 Март 18, 2016 13:38:24

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

Request в templates tag

Должен быть. Мой пример:

from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def url_replace(context, field, value):
    request = context['request']
    dict_ = request.GET.copy()
    dict_[field] = value
    return dict_.urlencode()



Офлайн

#3 Март 18, 2016 15:24:00

PavelIvanov
Зарегистрирован: 2015-09-21
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Request в templates tag

@register.inclusion_tag("shop/elements/test.html", takes_context=True)
def draw_test(context):
	print dir(context)
['__class__', '__contains__', '__copy__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_current_app', '_reset_dicts', 'autoescape', 'bind_template', 'current_app', 'dicts', 'flatten', 'get', 'has_key', 'is_current_app_set', 'new', 'pop', 'push', 'render_context', 'setdefault', 'template', 'template_name', 'update', 'use_l10n', 'use_tz']

Офлайн

#4 Март 18, 2016 15:31:25

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

Request в templates tag

PavelIvanov
Забудьте про джанговский шаблонизатор. Он плохой и он не нужен. Джанга уже умеет jinja2, никакие вот эти вот страдания с тегами не нужны, просто вызываете функцию или метод и всё.



Офлайн

#5 Март 18, 2016 15:34:35

PavelIvanov
Зарегистрирован: 2015-09-21
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Request в templates tag

FishHook
PavelIvanovЗабудьте про джанговский шаблонизатор. Он плохой и он не нужен. Джанга уже умеет jinja2, никакие вот эти вот страдания с тегами не нужны, просто вызываете функцию или метод и всё.
Это конечно хорошо и здорово, но сейчас, к сожалению, есть конкретный проект и этот затык единственный на пути к завершению. И очень не хочется что-то менять на практически завершенном проекте

Офлайн

#6 Март 18, 2016 20:35:13

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Request в templates tag

PavelIvanov
Проверьте, используется ли RequestContext (а не Context - это происходит, к примеру, если использовать render_to_response вместо render) и включен ли соотвественный context processor в настройках джанги.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version