Класс Truncator
Класс Truncator применяется к строке и возвращает новый объект, который позволяет обрезать строку различными способами. Основные методы класса - chars для обрезки по количеству символов и words для обрезки по количеству слов. Класс учитывает HTML-теги и может корректно обрезать текст, не разрывая структуру тегов.
Синтаксис
from django.utils.text import Truncator
truncator = Truncator(text)
result = truncator.chars(length, truncate='...', html=False)
result = truncator.words(length, truncate='...', html=False)
Параметры методов:
-
length- количество символов или слов, до которого нужно обрезать строку -
truncate- строка, которая добавляется в конец обрезанного текста (по умолчанию '...') -
html- флаг, указывающий, содержит ли строка HTML-теги (по умолчанию False)
Пример . С методом chars
Давайте обрежем строку до 10 символов:
from django.utils.text import Truncator
text = "Это длинная строка для обрезки"
truncator = Truncator(text)
res = truncator.chars(10)
print(res)
Результат выполнения кода:
"Это длинная..."
Пример . С методом words
Давайте обрежем строку до 3 слов:
from django.utils.text import Truncator
text = "Это длинная строка для обрезки"
truncator = Truncator(text)
res = truncator.words(3)
print(res)
Результат выполнения кода:
"Это длинная строка..."
Пример . С HTML-тегами
Давайте обрежем HTML-строку до 20 символов, сохраняя структуру тегов:
from django.utils.text import Truncator
html_text = "<p>Это <strong>длинная</strong> строка с HTML</p>"
truncator = Truncator(html_text)
res = truncator.chars(20, html=True)
print(res)
Результат выполнения кода:
"<p>Это <strong>длинная</strong> с...</p>"
Пример . С кастомным окончанием
Давайте обрежем строку до 15 символов с кастомным окончанием:
from django.utils.text import Truncator
text = "Это очень длинная строка для примера"
truncator = Truncator(text)
res = truncator.chars(15, truncate=' [read more]')
print(res)
Результат выполнения кода:
"Это очень длинная [read more]"