Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django变量直接在模板中替换,但不在自定义标记中替换_Python_Django_Django Templates_Django Custom Tags - Fatal编程技术网

Python Django变量直接在模板中替换,但不在自定义标记中替换

Python Django变量直接在模板中替换,但不在自定义标记中替换,python,django,django-templates,django-custom-tags,Python,Django,Django Templates,Django Custom Tags,我创建了一个自定义标记,其工作原理类似于块标记: @register.tag def dash(parser, token): nodelist = parser.parse(('enddash',)) parser.delete_first_token() args = token.split_contents() title = args[1] return DashNode(nodelist, title) class DashNode(te

我创建了一个自定义标记,其工作原理类似于块标记:

@register.tag
def dash(parser, token):
    nodelist = parser.parse(('enddash',))
    parser.delete_first_token()
    args = token.split_contents()

    title = args[1]

    return DashNode(nodelist, title)


class DashNode(template.Node):
    def __init__(self, nodelist, title):
        self.nodelist = nodelist

        if title[0] in ('"', "'") and title[0] == title[-1]:
            self.title = title[1:-1]
        else:
            self.title = template.Variable(title)

        self.tpl = """
<div class="dashboard-body container-fluid main-section-body view-mode" data-role="main">
    <div class="dashboard-header clearfix">
        <h2>{title}</h2>
    </div>
{content}
</div>"""

    def render(self, context):
        try:
            title = self.title.resolve(context)
        except AttributeError:
            title = self.title

        output = self.nodelist.render(context)

        new_output = self.tpl.format(content=output, title=title)
        return new_output
@register.tag
def dash(解析器、令牌):
nodelist=parser.parse(('enddash',))
parser.delete_first_token()
args=token.split_contents()
title=args[1]
返回DashNode(节点列表,标题)
类DashNode(template.Node):
定义初始化(self、节点列表、标题):
self.nodelist=节点列表
如果(“,“”)中的标题[0]和标题[0]==标题[-1]:
self.title=标题[1:-1]
其他:
self.title=template.Variable(title)
self.tpl=“”
{title}
{content}
"""
def呈现(自身、上下文):
尝试:
title=self.title.resolve(上下文)
除属性错误外:
title=self.title
输出=self.nodelist.render(上下文)
新的输出=self.tpl.format(内容=输出,标题=标题)
返回新的输出
标记接受一个参数,可以是字符串或变量

标记与字符串一起工作没有问题。如果我使用变量:

{% dash page_title %}
   <!-- blablabla -->
{% enddash %}
{%dash页面\标题%}
{%enddash%}
引发了
variabledesnotexist
错误。但是如果我在模板中直接使用该变量,则该变量已正确展开


我使用的是Django 1.5.5(我被它锁定了…

variabledeodesnotexist被抛出到行
self.title.resolve(context)
中,因为实例化
模板.Variable(title)时
,title与当前
上下文中的现有变量不对应。这可能意味着在您的示例中
title
不是
“page\u title”
。请检查。

现在似乎可以工作。我根本没有更改代码。这可能是由于我使用的框架(Splunk)造成的.

标题
页面的标题