Метод chars
Метод chars применяется к экземпляру класса Truncator и возвращает обрезанную версию исходной строки, ограниченную заданным количеством символов. В отличие от метода Truncator/method/words/">words, который обрезает по словам, chars работает на уровне отдельных символов. Метод принимает обязательный аргумент - количество символов, до которого нужно обрезать строку, и опциональные параметры для настройки многоточия и обработки HTML-тегов.
Синтаксис
from django.utils.text import Truncator
truncator = Truncator(text)
result = truncator.chars(num, truncate=None, html=False)
Параметры метода:
-
num- обязательный аргумент, количество символов, до которого нужно обрезать строку; -
truncate- опциональный аргумент, строка, которая будет добавлена в конце обрезанной строки (по умолчанию используется многоточие "…"); -
html- опциональный аргумент, булево значение, указывающее, нужно ли обрабатывать HTML-теги (по умолчаниюFalse).
Пример
Давайте обрежем строку до 10 символов с добавлением многоточия:
from django.utils.text import Truncator
text = "This is a very long article about Django"
truncator = Truncator(text)
res = truncator.chars(10)
print(res)
Результат выполнения кода:
"This is a …"
Пример
Давайте обрежем строку до 15 символов с использованием пользовательского окончания:
from django.utils.text import Truncator
text = "Django is a high-level Python web framework"
truncator = Truncator(text)
res = truncator.chars(15, truncate="...")
print(res)
Результат выполнения кода:
"Django is a ..."
Пример
Давайте обрежем строку с HTML-тегами, сохранив их структуру:
from django.utils.text import Truncator
html_text = "<p>This is a <strong>very</strong> long article about Django</p>"
truncator = Truncator(html_text)
res = truncator.chars(20, html=True)
print(res)
Результат выполнения кода:
"<p>This is a <strong>v</strong>…</p>"
Пример
Давайте используем метод для обрезки текста в модели:
from django.db import models
from django.utils.text import Truncator
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
def get_short_content(self):
truncator = Truncator(self.content)
return truncator.chars(50)
Результат выполнения кода при вызове метода:
"Very long article content truncated to 50 characters…"
Смотрите также
-
метод
words,
который обрезает строку по количеству слов -
класс
Truncator,
который предоставляет методы для обрезки текста -
функция
slugify,
которая преобразует строку в URL-совместимый формат -
функция
strip_tags,
которая удаляет HTML-теги из строки