2013-06-29 8 views
1

template.htmlтекст нарезка не работает

{{list.report.description|default:"No description available"|slice:"45" }}{% if list.report.description|length > 45 %}...{% endif %} 

1.Это нарезка, если введенный символ больше, чем 45.

2.it проблемы производят при создании нового отчета, если описание не дано, его должен отображать текст по умолчанию как «Нет описания», но вместо этого он отображает текст вместе с 3 точками.

2.Не проблема, если поле сохраняется с пустым, оно отображается по умолчанию как «Нет описания».

Благодаря

+1

Примечание есть опечатка в '{{list.report.discription | умолчанию: "Нет описания" | ломтика: "45" }} ': должно ли' discription' быть 'description'? – okm

+0

Нет, это не проблема, при редактировании в SO произошла ошибка, извините – user2086641

+0

Если вы удалите все разрезы, '' {{list.report.description}} 'дает вам точные результаты? Я думаю, что нет. – karthikr

ответ

1

Хотя я не совсем уверен, почему ваш код не работает, это «неправильно», что нужно делать в любом случае.

Попробуйте метод truncatechars вместо: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#truncatechars

{{ value|truncatechars:9 }} 

Если значение Joel is a slug, то выход будет Joel i....

Для Django 1.3 или старше, используйте следующий templatetag: http://djangosnippets.org/snippets/444/

from django import template 
register = template.Library() 

@register.filter 
def truncatechars(s, num): 
    """ 
    Truncates a word after a given number of chars 
    Argument: Number of chars to truncate after 
    """ 
    length = int(num) 
    string = [] 
    for word in s.split(): 
     if len(word) > length: 
      string.append(word[:length]+'...') 
     else: 
      string.append(word) 
    return u' '.join(string) 
+0

Это справедливо только для django 1.4+ .. – karthikr

+0

Очень верно, я добавил альтернативу для более старых версий Django :) – Wolph

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