Метод words

Метод words применяется к экземпляру класса Truncator и возвращает строку, обрезанную до указанного количества слов. Метод добавляет многоточие (три точки) в конце обрезанной строки, чтобы указать на то, что текст был сокращен. Обрезка происходит по границам слов, что делает результат более читаемым по сравнению с обрезкой по символам. Метод принимает обязательный аргумент num - количество слов, которое нужно оставить.

Синтаксис

pythonfrom django.utils.text import Truncator

truncator = Truncator(text)
result = truncator.words(num)

Параметры

Метод words принимает следующие параметры:

⁅b⁆num⁅/b⁆ - обязательное целочисленное значение, определяющее количество слов, которое должно остаться в итоговой строке. Если указанное число больше фактического количества слов в исходном тексте, метод вернет исходную строку без изменений.

Пример . С обрезкой текста до 3 слов

Создадим усекатель текста и обрежем строку до трех слов:

pythonfrom django.utils.text import Truncator

text = "Это длинное предложение с множеством слов для примера"
truncator = Truncator(text)
res = truncator.words(3)
print(res)

Результат выполнения кода:

python"Это длинное предложение..."

Пример . С текстом короче указанного количества слов

Если количество слов в исходном тексте меньше указанного значения, метод вернет полный текст без обрезки:

pythonfrom django.utils.text import Truncator

text = "Короткий текст"
truncator = Truncator(text)
res = truncator.words(10)
print(res)

Результат выполнения кода:

python"Короткий текст"

Пример . С текстом, содержащим знаки препинания

Метод words корректно обрабатывает знаки препинания и HTML-теги, обрезая текст по словам:

pythonfrom django.utils.text import Truncator

text = "<p>Привет, мир! Как у тебя дела, друг?</p>"
truncator = Truncator(text)
res = truncator.words(4)
print(res)

Результат выполнения кода:

python"<p>Привет, мир! Как у тебя дела...</p>"

Пример . С использованием в модели

Метод часто используется в моделях для создания краткого описания или анонса записи:

pythonfrom django.db import models
from django.utils.text import Truncator

class Article(models.Model):
  title = models.CharField(max_length=200)
  content = models.TextField()

  def short_content(self):
    return Truncator(self.content).words(20)

Теперь при вызове метода short_content для экземпляра модели будет возвращаться обрезанная версия содержимого:

pythonfrom myapp.models import Article

article = Article.objects.get(id=1)
res = article.short_content()
print(res)

Смотрите также

  • метод chars,
    который обрезает текст по количеству символов
  • функция slugify,
    которая преобразует строку в URL-совместимый формат
  • класс Truncator,
    который предоставляет методы для обрезки текста
  • функция mark_safe,
    которая помечает строку как безопасную для вывода в HTML