Program Club

* args, ** jinja2 매크로의 kwargs

proclub 2020. 12. 31. 22:19
반응형

* args, ** jinja2 매크로의 kwargs


Jinja2 매크로에 대한 추가 인수 및 kwargs는 어떻게 처리됩니까? 문서는 명확하지 않습니다.

예를 들어, 이것은 분명히 잘못되었습니다.

{% macro example_1(one, two, **kwargs) %}
    do macro stuff
{% endmacro %}

결과적으로

jinja2.exceptions.TemplateSyntaxError

TemplateSyntaxError: expected token 'name', got '**'

문서는 말합니다 :

Kwargs

변수 인수 하지만 키워드 인수. 사용되지 않은 모든 키워드 인수는이 특수 변수에 저장됩니다.

불행히도 추가 키워드 인수 조합은 오류입니다.

{% 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되어야한다 적어도 한 번 액세스 를 받아 들여야 어떤 매크로입니다. 즉, 매크로 인수 목록에서 선언 하지 않고{{ kwargs }} 매크로 본문에서 한 번만 호출해야 합니다. 에도 마찬가지입니다 .{{ 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")}}

참조 URL : https://stackoverflow.com/questions/13944751/args-kwargs-in-jinja2-macros

반응형