在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/區(qū)塊鏈  Python  網(wǎng)絡(luò)安全/ jinja2中如何修改多層for循壞外的變量

jinja2中如何修改多層for循壞外的變量

遇到了一個(gè)問(wèn)題,簡(jiǎn)化了一下代碼,代碼如下:

{% set temp =1 %}
{% for a in range(2) %}
    {% for b in range(3) %}
        {% for c in range(4) %}
            {% for d in range(5) %}
                {% set temp = 5 %}
             {% endfor %}
        {% endfor %}
    {% endfor %}
{% endfor %}
{{temp}}

最終打印出來(lái)的temp是1,實(shí)在沒(méi)弄清楚這個(gè)temp的生存作用域。如果想修改這個(gè)temp該怎么做?
在stackoverflow上看到一個(gè)不知道是不是類似的問(wèn)題,英語(yǔ)不是太好,大概看下來(lái)好像是一個(gè)問(wèn)題?
https://stackoverflow.com/que...

回答
編輯回答
兮顏

個(gè)人理解如下:

jinja2 的變量、循環(huán)結(jié)構(gòu)體或條件結(jié)構(gòu)體都必須在一個(gè) block 也就是塊中才有效,所以你的代碼應(yīng)該在外層加上一個(gè) block。詳細(xì)解釋看注釋。

{% block content %}  <!-- content 塊 -->
{% set temp =1 %} <!-- 類似于一個(gè)全局變量 -->
{% for a in range(2) %}
    {% for b in range(3) %}
        {% for c in range(4) %}
            {% for d in range(5) %}
                {% set temp = 5 %} <!-- 類似于是一個(gè)循環(huán)結(jié)構(gòu)體內(nèi)的局部變量 -->
                {{ temp }} <!-- 這里的 temp 應(yīng)該等于 5 -->
             {% endfor %}
        {% endfor %}
    {% endfor %}
{% endfor %} 
{{temp}} <!-- 類似于調(diào)用了一個(gè)全局變量,所以這里的 temp 應(yīng)該等于 1 -->

{% endblock %}
2018年2月19日 12:52
編輯回答
帥到炸

建議有需要的時(shí)候,去文檔里面找,特別是原英文文檔。

{% set ns = namespace(found=false) %}
{% for item in items %}
    {% if item.check_something() %}
        {% set ns.found = true %}
    {% endif %}
    * {{ item.title }}
{% endfor %}
Found item having something: {{ ns.found }}
2018年6月29日 00:25