Отрывок из блога в Джанго - PullRequest
       2

Отрывок из блога в Джанго

9 голосов
/ 25 октября 2011

Я создаю приложение для блога в Django, и когда я отображаю все блоги, я хочу отобразить небольшой отрывок из блога с каждой записью. Кто-нибудь может сказать мне, как я могу это сделать?

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

Ответы [ 3 ]

14 голосов
/ 25 октября 2011

Я предлагаю вам использовать шаблонный шаблон truncatewords .

Пример шаблона:

<ul>
{% for blogpost in blogposts %}
    <li><b>{{blogpost.title}}</b>: {{blogpost.content|truncatewords:10}}</li>
{% endfor %}
</ul>

Если содержимое блога хранится в формате HTML, используйте truncatewords_html дляубедитесь, что открытые теги закрыты после точки усечения (или в сочетании с striptags удалите теги html).

Если вы хотите усечь символы (не слова), вы можете использовать slice:

{{blogpost.content|slice:":10"}}

(выводит первые 10 символов).

Если содержимое хранится в формате HTML, объедините его с striptags, чтобы избежать проблем с открытыми тегами: {{blogpost.content|striptags|slice:":10"}}

2 голосов
/ 24 июля 2013

В Django 1.4 и более поздних версиях есть фильтр truncatechars , который обрезает строку до определенной длины и завершает ее с помощью .... На самом деле он усекает его до определенной длины минус 3, а последние 3 символа становятся ....

1 голос
/ 06 января 2017

В некотором роде ..

Я только что дал ответ на этот вопрос: Фильтр шаблона Django strip_tags добавляет пробел , который может помочь другим при создании выдержек, содержащих теги HTML и краткое содержание в

тегов.

Помогает преобразовать это ..

"<p>This is a paragraph.</p><p>This is another paragraph.</p>"

в это ..

'This is a paragraph. This is another paragraph.'

вместо этого ..

'This is a paragraph.This is another paragraph.'
...