Django自定义模板标签中的访问请求

我在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}

在“ 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'

)

但我得到一个错误:

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

回答:

request在该范围内不是变量。你必须首先从上下文中获取它。传递takes_context给装饰器并添加context到tag参数。

像这样:

@register.inclusion_tag('new/userinfo.html', takes_context=True)

def address(context):

request = context['request']

address = request.session['address']

return {'address':address}

以上是 Django自定义模板标签中的访问请求 的全部内容, 来源链接: utcz.com/qa/403740.html

回到顶部