2013-07-16 2 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 при рендеринге: объект« dict »не имеет атрибута« where_tab »в шаблоне Я использовал эту строку для загрузки templatetag, поскольку я уже использую это. {% Load templatetags%} –

+0

Затем измените шаблон тег соответствующим образом. – karthikr

+1

Я бы очень рекомендовал вам учиться отладке на основе сообщения об ошибке. В нем четко сказано, что 'dict' не имеет атрибута' where_tab '. это означает, что 'leftbar.where_tab' должен быть' leftbar.get ('where_tab') ' – karthikr

Смежные вопросы