2017-06-21 75 views
0

我有一個簡單的問題,但目前我愚蠢的解決它。Django的/如果在模板中

我有不同的列表從視圖傳遞到模板來創建一個googletable的數據。它的工作得很好,看起來如下:

 var input_class = 'bc'; 

     if(input_class == 'ab') { 
      var rawData = [['ab'], 
         {%for ab in ab_list%}['{{ab}}'], 
         {% endfor %}]; 
     } 
     else if(input_class == 'bc') { 
      var rawData = [['bc'], 
         {%for bc in bc_list%}['{{bc}}'], 
         {% endfor %}]; 
     } 
     else { 
      var rawData = [['cd'], 
         {%for cd in cd_List%}['{{cd}}'], 
         {% endfor %}]; 
     } 

出於顯而易見的原因,我希望把它放在類似如下:

 {% for key, value in filter_lists.iteritems %} 
      {% if input_class == '{{key}}' %} 
       var rawData = [['{{key}}'], 
        {% for item in value %}['{{item}}'], 
        {% endfor %} 
       ]; 
      {% endif %} 
     {% endfor %} 

可悲的是它不工作。鍵都是'ab'這樣的字符串,這些值與工作示例中的列表完全相同。

感謝您的幫助,Jakob。


編輯:

  • 我使用Python 2.7版,Django的1.11

  • input_class是由由列表中創建一個下拉菜單改變。同樣的列表是定義字典的鍵。

+0

嘗試'items'而不是'iteritems' 。 –

+0

什麼改變'input_class'?它是由用戶在頁面上設置的,例如通過某種輸入?你期望它通過JS動態更改嗎? –

+0

項目不起作用 –

回答

0

發現自己的解決方案,但是不知道爲什麼其他版本是有沒有工作..問題似乎是if語句..

 {% for key, value in filter_lists.items %} 
      if (input_class == '{{key}}'){ 
       var rawData = [ 
        ['{{key}}'], 
        {% for item in value %}['{{item}}'], 
        {% endfor %} 
       ]; 
      } 
     {% endfor %}