"Читать далее" в django

Часто бывает нужно организовать новости, блог, какие-то статьи. Для этого обычно используют небольшой вступительный текст и ссылку “Читать далее”.

Если вы используете HTML-тэги в своих статьях, то заметите, что Django не закрывает их при использовании фильтра truncatewords.

Пример реализации
Если вы хотите запретить HTML-тэги только в этом вступительном тексте, а также картинки, видео и прочее, то можно пойти следующим путем. В необходимом файле шаблона, в требуемой переменной примените фильтр striptags, затем truncatewords, затем safe (для правильной обработки HTML-символов):

{{ news.description|striptags|truncatewords:"30"|safe }}

Получится, например, такой текст - “Как все мы помним, после The International все датские игроки из MYM покинули эту организацию и им на замену была взята команда Scythe.SG. Вчера стало известно, что состав снова претерпел серьезные …”. Протестировано на Django 1.3.

Также, если у вас пробелы представлены в виде  , то приведенный выше метод может не работать. Для решения проблемы используйте фильтр truncatewords_html. Таким образом, код будет вида:

{{ news.description|truncatewords_html:"30"|safe }}

Как видите, мы еще убрали фильтр striptags.

django