трудно сформулировать вопрос, так что я перейду прямо к делу, я написал следующий тег шаблона
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())
Итак, мой вопрос: почему происходит сбой isinstance, если узел является действительным для экземпляра SimpleTagNode (или я так верю), я проверил nodelist
и увидел, что действительно были экземпляры SimpleTagNode, но все они возвращали бы false в условие isinstance
, я потратил много времени, пытаясь выяснить это, но ничего не нашел, я даже использовал оболочку с запущенными функциями выше и все еще возвращал fals, любая помощь очень ценится