Форум сайта python.su
Гугл говорит, что Request лежит в Context. Регистрирую тэг с параметрами takes_context=True, но Request'а там все равно нет. Смысл в том, что есть повторяющийся элемент (предположим последние новости) и его нужно выводит на страницах шаблона. Но в этом тэге нужно брать значения из сессии. Может все вообще делается иначе и я изобретаю велосипед?
Офлайн
Должен быть. Мой пример:
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()
Офлайн
@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']
Офлайн
PavelIvanov
Забудьте про джанговский шаблонизатор. Он плохой и он не нужен. Джанга уже умеет jinja2, никакие вот эти вот страдания с тегами не нужны, просто вызываете функцию или метод и всё.
Офлайн
FishHookЭто конечно хорошо и здорово, но сейчас, к сожалению, есть конкретный проект и этот затык единственный на пути к завершению. И очень не хочется что-то менять на практически завершенном проекте
PavelIvanovЗабудьте про джанговский шаблонизатор. Он плохой и он не нужен. Джанга уже умеет jinja2, никакие вот эти вот страдания с тегами не нужны, просто вызываете функцию или метод и всё.
Офлайн
PavelIvanov
Проверьте, используется ли RequestContext (а не Context - это происходит, к примеру, если использовать render_to_response вместо render) и включен ли соотвественный context processor в настройках джанги.
Офлайн