Найти - Пользователи
Полная версия: Как передать request в шаблон
Начало » Django » Как передать request в шаблон
1 2 3
adw0rd
{% load category %}{% category request %}
так нельзя?
hulygun
adw0rd
так нельзя?
так уже пробовал… ругается
'category' received too many positional arguments
adw0rd
Потомучто вы не принимаете аргументов, сделайте так:
@register.inclusion_tag('blog/category.html')
def category(request):
    category = Category.objects.all().order_by('id')
    return {'category':category}
adw0rd
Почитал про inclusion_tag, теперь и вы почитайте https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags

Там есть пункт про “takes_context”, пример:
# The first argument *must* be called "context" here.
def jump_link(context):
    return {
        'link': context['home_link'],
        'title': context['home_title'],
    }
# Register the custom tag as an inclusion tag with takes_context=True.
register.inclusion_tag('link.html', takes_context=True)(jump_link)
hulygun
Так тоже пробовал. Страница рендерится нормально, но request как контекст не передаёт
adw0rd
Вообщем у вас должно получится что-то типа:
@register.inclusion_tag('blog/category.html', takes_context=True)
def category(context):
    request = context['request']
    category = Category.objects.all().order_by('id')
    return {'category':category}
hulygun
Что то не выходит((( Получаю KeyError и Error during template rendering
adw0rd
Ну давайте теперь учится отладке, для начала поставьте себе debug_toolbar и мы убедимся что у вас вообще есть в контексе “request”.

Еще крайне советую попробовать http://adw0rd.com/2012/python-django-pudb/
Тогда сможем посмотреть что передается в “context” на этапе выполнения
@register.inclusion_tag('blog/category.html', takes_context=True)
def category(context):
    import pudb; pudb.set_trace()
    request = context['request']
    category = Category.objects.all().order_by('id')
    return {'category':category}

hulygun
debug_toolbar поставил сразу же после 1 Вашего упоминания о нём (request не передаётся в шаблон)
Для разработки я использую PyCharm и если в коде я не использую какие либо импорты, это видно.
строчка
request = context['request']
никак не использует
from  django.core.context_processors import request
adw0rd
Тогда покажите текущий вид (как я понимаю вы воспользовались советами в предыдущих постах) вашей вьюхи?

Либо просто дайте мне исходный код вашего проекта, я сам пофикшу, а то мы так больше времени потратим
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