gpt4 book ai didi

python - Django 模板标签实例

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:34 24 4
gpt4 key购买 nike

很难用语言表达这个问题,所以我就开门见山,我写了以下模板标签

def do_simple_tag(parser, token):
try:
tag_name, name = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError("%r tag requires exactly one argument" % token.contents.split()[0])
if not (name[0] == name[-1] and name[0] in ('"', "'")):
raise template.TemplateSyntaxError("%r tag's argument should be in quotes" % tag_name)
return SimpleTagNode(name[1:-1])


class SimpleTagNode(template.Node):
def __init__(self, name):
self.name = name
def render(self, context):
content = get_content(context, request, name)
return content

register.tag('simple_tag', do_simple_tag)

然后我编写了一个函数,该函数在模板中扫描此标签,并在列表中获取所述模板内此标签的所有实例,如下所示

def get_tags(template):
compiled_template = get_template(template)
simple_tag_instances = _scan_tag(compiled_template.nodelist)

def _scan_tag(nodelist, current_block=None, ignore_blocks=[]):
tags = []
for node in nodelist:
if isinstance(node, SimpleTagNode):
tags.append(node.get_name())

所以,我的问题是,如果节点实际上是 SimpleTagNode 的实例(或者我相信是这样),为什么 isinstance 会失败,我检查了 nodelist 并发现确实存在 SimpleTagNode 的实例,但它们在 isinstance 条件下都会返回 false,我花了很长时间试图解决这个问题,但一无所获,我什至使用运行上面函数的 shell 仍然返回 false,任何帮助都是非常感谢

最佳答案

所以我终于解决了这个问题,基本上在文件顶部包含 _scan_tag 函数的模块中,我像这样导入了 SimpleTagNode

from simple_tag.templatetags.simple_tag import SimpleTagNode

simple_tag 是我的应用程序的名称,也是模板文件的名称,由于某种原因,这与 isinstance 冲突,所以我尝试了

from paulo.simple_tag.templatetags.simple_tag import SimpleTagNode

paulo 是我的项目应用程序,它有效。

关于python - Django 模板标签实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8276937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com