gpt4 book ai didi

python - Jinja2 扩展 - 获取传递给扩展的变量值

转载 作者:太空宇宙 更新时间:2023-11-04 06:06:10 24 4
gpt4 key购买 nike

所以我有一个 Jinja2 扩展。基本上遵循解析器逻辑,除了我需要从传入的已解析参数中获取一个值。

例如,如果我有一个名为 loadfile 的扩展,并向它传递一个变量:

{% loadfile "file.txt"%}

当我通过 parser.parse_expression() 获取参数时,我得到一个 node.Const 变量,它有一个 .value 参数 - 并且我可以获取名称 file.txt 没问题。

然而...

{% set filename = "file.txt" %}
{% loadfile filename %}

给我带来麻烦。解析器给了我一个 node.Name expr 节点,它既不响应 .value 也不响应所有其他调用的 as_const(...)节点响应。

我无法弄清楚如何评估我从解析参数中获得的 node.Name 节点的值,因此无法获得名称 file.txt.

有没有一种很好的方法来解析扩展中的参数变量/值,以便我可以使用它们来执行扩展?

谢谢!

最佳答案

这对我有用

def parse(self, parser):
lineno = parser.stream.next().lineno

# args will contains filename
args = [parser.parse_expression()]

return nodes.Output([
nodes.MarkSafeIfAutoescape(self.call_method('handle', args))
]).set_lineno(lineno)

def handle(self, filename):
# bla-bla-bla

关于python - Jinja2 扩展 - 获取传递给扩展的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21924444/

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