* args,** kwargs在jinja2macros
Jinja2macros如何处理额外的参数和kwargs? 文件不是完全清楚的。
例如,这显然是错误的:
{% macro example_1(one, two, **kwargs) %} do macro stuff {% endmacro %}
这导致了
jinja2.exceptions.TemplateSyntaxError TemplateSyntaxError: expected token 'name', got '**'
该文件说:
kwargs
像可变参数,但关键字参数。 所有未使用的关键字参数都存储在这个特殊variables中。
不幸的是,任何额外的关键字参数组合是一个错误,
{% macro example_2(one, two) %} do macro stuff {% endmacro %} {{ example_2(one, two, test='test') }} TypeError: macro 'example_2' takes no keyword keyword argument 'test'
我没有任何例子,也没有在Jinja2的源代码atm中大肆渲染。 目前我的文档还不清楚。 任何想法赞赏。
诀窍是kwargs
必须在任何接受它们的macros中至less被访问一次 。 也就是说,你必须在macros体中调用{{ kwargs }}
一次, 而不必在macros参数列表中声明它。 {{ varargs }}
也是如此。
这是行不通的
{% macro example_2(one, two) %} * {{one}} - {{two}} {% endmacro %} {{example_2(1, 2, test="Hello")}}
这会
{% macro example_2(one, two) %} * {{one}} - {{two}} * {{kwargs}} {% endmacro %} {{example_2(1, 2, test="Hello")}}