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