2010-08-19 74 views
1

我有兩個4層對象傳遞給django模板。我目前正在循環遍歷每一層,並且如果它存在的話,就會降級。我最終得到了key,key2和key3,它們在循環時表示對象中的當前位置。我想引用另一個使用這些變量的層次相同的對象,但遇到了一些麻煩。在Django模板標籤中使用變量作爲對象鍵值

如果我試圖做到這一點的蟒蛇,它看起來像這樣

my_object[ key ][ key2 ][ key3 ]

但在Django模板,它似乎並沒有我可以用括號,如果我所使用的時段它會認爲關鍵是關鍵的名稱,而不是把它看作是一個變量。

如果您需要我的代碼的更多詳細信息,請告訴我。謝謝!

編輯:這裏是我的對象和我的模板代碼的例子。

variable1 = { 
    "content": { 
     "pages": { 
      "view":True, 
      "add":True, 
      "edit":True, 
      "delete":True 
     }, 
     "articles": { 
      "view":True, 
      "add":True, 
      "edit":True, 
      "delete":True 
     }, 
     "slideshow": { 
      "view":True, 
      "edit":True 
     }, 
    }, 
    "people": { 
     "view":True, 
     "add":True, 
     "edit":True, 
     "delete":True, 
     "sort-staff":True, 
     "sort-riders":True 
    } 
} 

變量2與變量1相同,但具有相同的鍵,但某些鍵缺失。

這是我的模板看起來像排序通過這個對象。

{% for key, value in variable1.items %} 
    <strong>{{ key|title }}</strong> 
    {% for key2, value2 in value.items %} 
     {% if value2.items %} 
      <p class="indent">{{ key2|title }} 
      {% for key3, value3 in value2.items %} 
       <p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}_{{ key3 }}" {% if variable2[key][key2][key3] %}checked="checked"{% endif %}> {{ key3|title }}</p> 
      {% endfor %} 
      </p> 
     {% else %} 
      <p class="indent"><input type="checkbox" name="form_permission_{{ key }}_{{ key2 }}"> {{ key2|title }}</p> 
     {% endif %} 
    {% endfor %} 
{% endfor %} 

如果你看最縮進的行,你會看到{% if variable2[key][key2][key3] %}checked="checked"{% endif %}。你應該能夠理解我試圖用該代碼完成的事情。

+0

你可以發佈你的對象的樣子和你的模板代碼嗎? – 2010-08-19 01:12:55

+0

增加了一些代碼,謝謝! – 2010-08-19 01:33:39

回答

0

我最終在數據發送到模板之前進行了排序和比較,因此不再需要此問題。隨意發佈其他選項。

0

這不能這樣做。看看爲此編寫一個模板標籤或過濾器。

+0

我非常肯定這是無法完成的,但似乎很多人可能會發現自己需要的東西。我希望找到一些已經寫好的東西(自定義標籤或過濾器),我可以插入。 – 2010-08-19 01:58:34

相關問題