Access request in django custom template tags

django, django-custom-tags, django-templates, python

Solution

`request` is not a variable in that scope. You will have to get it from the context first. Pass `takes_context` to the decorator and add `context` to the tag arguments.

Like this:

@register.inclusion_tag('new/userinfo.html', takes_context=True)
def address(context):
    request = context['request']
    address = request.session['address']
    return {'address':address}

Problem

My code in myapp_extras.py: ``` from django import template register = template.Library() @register.inclusion_tag('new/userinfo.html') def address(): address = request.session['address'] return {'address':address} ``` in 'settings.py': ``` TEMPLATE_CONTEXT_PROCESSORS =( "django.core.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", 'django.core.context_processors.request' ) ``` but I got an error: ``` TemplateSyntaxError at /items/ Caught an exception while rendering: global name 'request' is not defined Original Traceback (most recent call last): File "C:\Python25\lib\site-packages\django\template\debug.py", line 71, in render_node result = node.render(context) File "C:\Python25\lib\site-packages\django\template\__init__.py", line 915, in render dict = func(*args) File "C:\p4\projects\myproject\..\myproject\invoice\templatetags\myapp_extras.py", line 9, in address address = request.session['address'] NameError: global name 'request' is not defined ``` I referenced this one In Django, is it possible to access the current user session from within a custom tag?.

Original source

Related problems