2011-04-28 55 views
0

我已經在模板中的django中創建了一個for循環。我有一個聲明爲groupList = ['superUsers', 'group1', 'group2', 'groupless']的名稱列表。我可以通過說{{ groupList.2 }}(這個輸出組2)來呼叫組中的個別成員。但只要我嘗試在我的for循環中調用{{ groupList.i }},就沒有輸出。我的代碼如下所示:如何在django for循環中訪問groupList.i?

{% for i in length|get_range %} 
    {{ groupList.i }} <br /> <br /> 
    {% for staff in staffList.i %} 
     {{staff}} <br /> <br /> 
    {% endfor %} 
{% endfor %} 

長度被定義爲:length = len(groupList)

我希望能夠顯示第一個grouplist名稱,後跟一個名稱列表,然後是第二個groupList名稱,然後是相應的名稱列表。我究竟做錯了什麼?

回答

0

嘗試定義另一個模板變量爲:

foo = zip(groupList, staffList) 

,並使用它:(恕我直言)

{% for group, staff in foo %} 
    {{ group }} 
    {{ staff }} 
{% endfor %} 

好像做你想要什麼的最優雅的方式

+0

你說得對。這正是我想要的。我實現了: {%爲組,工作人員FOO%} {{組}} { %,爲職工%名} {{名}} { %ENDFOR%} 它完美地工作。非常感謝你。 – user728222 2011-04-28 18:36:09

0

試試類似於this solution

下面是我如何改變它以適應您的需求:

{% for i in length|get_range %} 
    {% with i as index %} 
    {% with i|slugify|add:":"|add:i as subset %} 
    {% with staffList|slice:subset as sublist %} 

    <p>Previous item: {{ sublist.0 }}</p> 

    {% endwith %} 
    {% endwith %} 
    {% endwith %} 
{% endfor %} 

所以這絕對不是一個完美的解決方案,但是這是我如何執行一組/列表.查找時,我想用一個計算值。

實際上,aviraldg的解決方案更加優雅,並且使用更好的方法來完成您想要完成的任務。