当前位置: 首页 > 面试题库 >

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

唐兴贤
2023-03-14
问题内容

我在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-Rating Model Example DetailView Template以获取有关所使用模型的详细信息 我已经扩展了基于视频模型的模板,以将给定用户的所选视频的评级列表作

  • 虽然 Django 已经给我们提供了足够丰富的内置标签和过滤器,但实际开发中还是会遇到内置标签和过滤器无法满足的需求,此时 Django 还给我们提供了实现自定义模板标签和过滤器的方式。想要自定义模板标签和过滤器,必须按照如下的方式做好前面的准备工作。 我们在前面的第一个应用 (hello_app) 中添加自定义的标签和模板。首先完成如下两步: 必须新建一个名为 templatetags 的目录。

  • 我在Liferay 7.1中设置了一个名为CustomLogo的页面自定义字段。我想访问它的值在免费标记模板。看完留档 我已经为自定义字段设置了视图权限(所有用户角色)。我还检查了列名和值是否正确地设置在增殖数据库(扩展表)中。然而,我得到以下错误: 在观察堆栈跟踪时,我看到有一个空指针异常,它声明: 如上所述,我已经为自定义字段设置了浏览权限。我还仔细检查了钥匙、错别字和可能的错误,但没有成功。

  • 本文向大家介绍ThinkPHP模板自定义标签使用方法,包括了ThinkPHP模板自定义标签使用方法的使用技巧和注意事项,需要的朋友参考一下 使用模板标签可以让网站前台开发更加快速和简单,使用过dedecms、phpcms等内容管理系统的人应该都知道,cms的前台都是使用模板标签来调用数据。以调用文章列表为例: dedecms可以写成: phpcms可以写成: ThinkPHP的自定义标签同样能够实

  • mytag|自定义宏标记: 标签名称:mytag 功能说明:用于获取自定义宏标记的内容 适用范围:全局使用 基本语法: {dede:mytag typeid='0' name=''/} 参数说明: name = ’’ 标记名称,该项是必须的属性,以下 2、3是可选属性; ismake = ’yes|no’ 默认是 no 表示设定的纯HTML代码, yes 表示含板块标记的代码; typeid =

  • 我试图从一个Liferay模板中发出自定义字段的值。 使用管理员界面,我定义了一个名为“org home page”的新组织级自定义字段,默认值为“tom rules”。 我想在portal_normal中发出这个值。虚拟机 我根据一位同事发送的一些帖子和样本,以及我自己的大量实验,拼凑出了这段代码: 不幸的是,Velocity无法解析表达式,并且保持不变。 以下表达式在portal_normal