2013-04-06 6 views
3

У меня есть система, которая тянет содержание HTML из базы данных, которая может выглядеть следующим образом:укорочения HTML содержания питона/Джанго

<p>This is some text</p> 
<p>More text</p> 
<p>Third Paragraph</p> 

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

<p>This is some text</p> 
<p>More text</ 

Отрубания содержания в любом месте, потенциально разрушая остальную часть веб-страницы , Есть ли способ в python либо закрыть все открытые теги, либо получить только определенное количество блоков верхнего уровня? Например, 2 блока будут первыми двумя тегами <p></p>. Я видел, что слово press имеет эту функцию при отображении коротких превью статей.

ответ

5

Если вам нужно сделать это в шаблоне смотреть на truncatewords-HTML: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#truncatewords-html

Или в другом месте, вы можете использовать лежащий в основе django.utils.text.Truncator класса (https://github.com/django/django/blob/1.7/django/utils/text.py#L65), который должен работать для большинства случаев использования, если вам нужны некоторые пользовательское поведение использует этот код как ссылку для его реализации самостоятельно.

Update:

Если вам нужно использовать django.utils.text.Truncator непосредственно, это, как вы создаете и вызвать метод words() (это точно, как truncatewords-HTML фильтр делает)

Truncator(value).words(length, html=True, truncate=' ...') 
Смежные вопросы