2017-06-22 132 views
0

我有要在網頁上顯示的對象列表(HTML文件)。 對象的類型(圖形,表格等)與情況不同。如何檢查jinja2模板中的變量是否已更改?

如果有圖形對象,我應該加載關於圖形的js和css文件。

因爲我不想在列表中沒有圖形對象的情況下爲圖形加載js,css文件,我已經實現了以下jinja2模板HTML文件。

{% block body %} 
    {% set has_graph = 0 %} 
    {% for item in components %} 
     {% if item.form == 'graph' %} 
      {% set has_graph = 1 %} 
     {% endif %} 
    {% endfor %} 
    {% if has_graph == 1 %} 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script> 
    {% endif %} 
{% endblock %} 

我發現{%集has_graph = 1%}的工作,但沒有被加載JS文件。

我不知道爲什麼{%if has_graph == 1%}不起作用。

回答

0

我發現set語句的範圍不能超越jinja2文檔(http://jinja.pocoo.org/docs/2.9/templates/#id12)中的循環。

請注意,不能在塊內設置變量並讓它們顯示在塊外。這也適用於循環。該規則的唯一例外是if語句不引入範圍。作爲結果下面的模板是不會做你所期望的:

{% set iterated = false %} 
    {% for item in seq %} 
     {{ item }} 
     {% set iterated = true %} 
    {% endfor %} 
{% if not iterated %} did not iterate {% endif %} 

這是不可能的神社語法來做到這一點。

+0

你可以通過導入和https://stackoverflow.com/a/16746185/533426,但是,是的,忍者似乎有點寫得不好 – Toskan

相關問題