development

선택한 명명 된 인수를 Jinja2의 include 컨텍스트에 전달하는 방법은 무엇입니까?

big-blog 2020. 12. 6. 21:47
반응형

선택한 명명 된 인수를 Jinja2의 include 컨텍스트에 전달하는 방법은 무엇입니까?


Django 템플릿 엔진을 사용하면 다음과 같이 명명 된 인수를 사용하여 사용자 지정 컨텍스트를 설정하는 동안 다른 부분 템플릿을 포함 할 수 있습니다.

{% include "list.html" with articles=articles_list1 only %}
{% include "list.html" with articles=articles_list2 only %}

당신은 치죠 될 수로 articles_list1articles_list2두 개의 서로 다른 목록입니다,하지만 난 바로 그 재사용 할 수 list.html사용하게 될 템플릿 articles변수를.

Jinja2를 사용하여 동일한 결과를 얻으려고하는데 with키워드가 지원되지 않기 때문에 권장되는 방법이 무엇인지 알 수 없습니다 .


2017+의 독자를 위해 Jinja는 기본적으로 성명서 2.9포함합니다 with. 연장이 필요하지 않습니다.

http://jinja.pocoo.org/docs/2.9/templates/#with-statement

Jinja의 이전 버전 (2.9 이전)에서는 확장 기능을 사용하여이 기능을 활성화해야했습니다. 이제 기본적으로 활성화되어 있습니다.


Jinja2에는 키워드 를 활성화 하는 확장 이 있습니다. withDjango와 동일한 구문을 제공하지 않으며 예상 한대로 작동하지 않을 수 있지만 다음과 같이 할 수 있습니다.

{% with articles=articles_list1 %}
    {% include "list.html" %}
{% endwith %}
{% with articles=articles_list2 %}
    {% include "list.html" %}
{% endwith %}

그러나 list.html기본적으로 목록을 생성하는 방법으로 만 작동하는 경우 macro대신 a로 변경하고 싶을 수 있습니다. 이렇게 하면 훨씬 더 많은 유연성을 얻을 수 있습니다.

{% macro build_list(articles) %}
    <ul>
        {% for art in articles %}
            <li>{{art}}</li>
        {% endfor %}
    </ul>
{% endmacro %}

{# And you call it thusly #}
{{ build_list(articles_list1) }}
{{ build_list(articles_list2) }}

이렇게하면 Jinja2 Include 문에 여러 변수전달할 수 있습니다 -( With내에서 쉼표로 변수를 분할하여 ) :

            {% with var_1=123, var_2="value 2", var_3=500 %}
                {% include "your_template.html" %}
            {% endwith %}

참고 URL : https://stackoverflow.com/questions/9404990/how-to-pass-selected-named-arguments-to-jinja2s-include-context

반응형