LINUX.ORG.RU

[Django] [textile] Закрывать html теги

 


0

0

Здравствуйте. Подскажите, какие есть в Django средства, чтобы в заданной строке, в которой возможно встречаются HTML-теги, все эти теги закрыть. Пробовал искать в гугле и по форумам, не помогло.

На сайте пользователю позволено вводить информацию не только в plain text, но и в textile (http://textile.thresholdstate.com/). Проблема в том, что textile

  • сам допускает использование HTML (например, использование <b> для того, чтобы сделать текст полужирным, в textile абсолютно легально)
  • встретившиеся, но не распознанные HTML теги (например, закрывающийся </div> в начале разметки textile) оставляет как есть

Из-за такого поведения textile пользователю будет легко сломать сайт, если что-нибудь не предпринять.

Надеюсь, в Django есть такие средства. Иначе придётся разбираться с Bautiful Soup, наверное. Или собственный велосипед изобретать (не столь большой правда).


Ответ на: комментарий от Voker57

В смысле отключать? Экранировать весь HTML в строке нельзя, потому что в него рендерится textile :-) Надо закрыть только те неправильные (незакрытые, неоткрытые, в неправильной последовательности) HTML-теги, которые были введены пользователем.

O_o
() автор топика

В django.utils.text модуле, есть функция truncate_html_words, используемая built-in фильтром truncatewords_html. Часть ее работы -- закрыть незакрытые тэги. Можете посмотреть как оно реализовано, или возможно она вам подойдет.

nnkd
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.