Я пытаюсь вывести первые 255 символов описания в список предметов и ищу способ получить это.

Пример: у меня есть переменная, которая содержит около 300 символов.

Я называю эту переменную следующим образом: {{ my_variable|characterlimit:255 }}

И он будет возвращать только первые 255 символов этой переменной.

Если этот тег не существует, я просто создам его (и предлагаю добавить его в django), но я хотел убедиться, что он не существует, прежде чем я нашел время, чтобы сделать это. Благодарность!

51
Shane Reustle 14 Авг 2010 в 20:18

6 ответов

Лучший ответ

Если my_variable является строкой, вы можете воспользоваться слайсом фильтр, который обрабатывает строку как список символов. Если это набор слов, то грубым эквивалентом является truncatewords - но это не совсем похоже на твою потребность.

truncatewords также добавляет многоточие ... в конце усеченного результата.

Использование будет что-то вроде

{{ my_variable|slice:":255" }}
79
MichielB 7 Июн 2017 в 20:38

Использование шаблонного фильтра для усечения текста не очень подходит для адаптивного дизайна. Поэтому вы также можете использовать css для усечения вашего текста, который является адаптивным. Я знаю, что ОП попросил сделать это с помощью шаблонаного фильтра django.

Вы можете получить отзывчивый усеченный текст, используя это:

.class {
    width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
0
Vincent 6 Май 2019 в 09:02

К сожалению, его не существует. Есть шаги для его реализации, но он все еще находится на стадии проектирования (хорошо, реализовано, но ждет решения о дизайне), как описано здесь.

Патч, прикрепленный к этому тикету, содержит реализацию.

0
Tomek Kopczuk 14 Авг 2010 в 16:24

Существует официальный встроенный фильтр:

{{ variable|truncatechars:255 }}
44
northben 15 Май 2014 в 18:58

Если вы хотите сократить слово, посмотрите на это https://docs.djangoproject.com/en/1.4/ref/templates/builtins/# truncatechars

7
Felipe França 23 Окт 2012 в 07:53

Более простой способ с использованием стандартного тега шаблона:

{{ variable|stringformat:".10s" }}

В этом случае 10 является аргументом позиции, а для строки - максимальным количеством отображаемых символов.

7
Mariusz Jamro 26 Ноя 2015 в 12:23