所以我有一个Jinja2扩展。基本上跟随分析器逻辑,只是我需要从解析ARGS的值在传递Jinja2扩展 - 获取传递给扩展的变量的值
举例来说,如果我有一个名为的loadFile的扩展,并把它传递一个变量:
{% loadfile "file.txt" %}
当我通过获取参数时,我得到一个node.Const
变量,它有一个.value
参数 - 我可以获得名称file.txt
没问题。
但是......
{% set filename = "file.txt" %}
{% loadfile filename %}
使我的问题。解析器给我一个node.Name
expr节点,它既不响应.value
也不响应所有其他节点响应的as_const(...)
调用。
我不知道如何评估我从解析参数中得到的node.Name
节点的值,因此无法获得名称file.txt
。
是否有一种很好的方法来解析扩展中的参数变量/值,以便我可以使用它们来执行扩展?
谢谢!
你'node.Name'看起来是这样的 - '姓名(名称= '文件名',CTX = '负荷')'?我认为它会这样评估:'return nodes.Output([nodes.MarkSafeIfAutoescape(self.call_method('your_method',args))])。set_lineno(lineno)',and method:'def your_method(self ,文件名):' – erthalion
为什么你需要一个扩展。您可以使用返回内容或使用include的Python函数。 – voscausa
@voscausa的扩展做了一些更复杂的事情,我只是简化了示例以清楚地说明问题。 –