2013-07-16 50 views
-1

template.html用逗號分開的項目模板

{% if leftbar.where_tab.0.location.title or leftbar.report.other_location or leftbar.report.location_description%} 
{%with leftbar.where_tab.0.location.title|add:leftbar.report.other_location|add:leftbar.report.location_description as pi%} 
{% if pi|length > 36 %}{{pi|slice:"36"}}...{% else %}{{pi}}{% endif %} 
{% endwith %}{%else%}Where{%endif%} 

我想打一個逗號(,)在每間item.Now它顯示沒有任何逗號其展示於一身line.Need一項目之間的分隔符而不是最後。

+1

我在這裏看不到循環。多個項目從哪裏來? – karthikr

+0

'if'不是一個循環。這是一個條件檢查。要實現你正在尋找的東西,你需要一個模板標籤。如果你試圖通過模板來做到這一點,它會變得非常混亂。 – karthikr

回答

1

你可以寫一個templatetag實現你在找什麼:

{% load_pi %} 
{% display_pi leftbar %} 

,並在templatetag pi.py

from django import template 

register = template.Library() 

def display_pi(leftbar): 

    title = leftbar.get('where_tab')[0].location.title if leftbar.get('where_tab') and leftbar.get('where_tab')[0].location else '' 
    location = leftbar.report.other_location if leftbar.get('report') else '' 
    description = leftbar.report.location_description if leftbar.get('report') else '' 

    if any([title, location, description]): 
     avail = ", ".join([x for x in [title, location, description] if x]) 
     return (avail[:36] + '..') if len(avail) > 36 else avail 
    return "Where" 

register.simple_tag(display_pi) 

請更嚴格地照顧了錯誤檢查。

+0

我得到這個錯誤「Caught AttributeError呈現:'字典'對象沒有屬性'模板中的where_tab'」我用這行加載templatetag,因爲我已經在使用它了。{%load templatetags%} –

+0

然後修改模板適當標記。 – karthikr

+1

我強烈建議你學習基於錯誤消息進行調試。它清楚地說'dict'沒有屬性'where_tab'。這意味着,'leftbar.where_tab'應該是'leftbar.get('where_tab')' – karthikr