所以我有一個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的擴展做了一些更復雜的事情,我只是簡化了示例以清楚地說明問題。 –