django-cms удаляет теги <img>из текстового содержимого - PullRequest
3 голосов
/ 08 февраля 2011

Я использую django-cms и добавляю часть текстового содержимого (используя стандартный текстовый плагин) на страницу. Затем на этом фрагменте текста я перехожу в режим html и добавляю <img src="/foo/bar.png" />, сохраняю плагин и сохраняю страницу.

Теперь на сайте я вижу изменения, внесенные мной на страницу, но тег img удален.

Есть идеи, почему это происходит? Я пробовал wymeditor и fckeditor, и это происходит под обоими.

Ответы [ 2 ]

3 голосов
/ 06 февраля 2013

Я считаю, что в Django CMS очистка HTML происходит перед слоем Django Template. Я заглянул в свою базу данных и обнаружил, что тег "" в моем HTML очищается.

Я думаю, что это происходит на уровне Plugin (фраза, которую Django CMS использует для своих битов контента). Я предполагаю, что для добавления HTML вы используете Текстовый плагин . Рассматривая источник для метода clean модели плагина Text :

def clean(self):
    self.body = clean_html(self.body, full=False)

Он вызывает cms.utils.clean_html, который, в свою очередь, использует html5lib для очистки HTML.

Одним из способов решения этой проблемы является создание пользовательского плагина , который наследуется от плагина Text и повторно реализует метод clean, который не выполняет эту очистку.

0 голосов
/ 08 февраля 2011

В Django строки очищаются перед выводом на веб-страницу по умолчанию. Я подозреваю, что Django-CMS рассматривает плагины как неанизированные пользовательские данные, поэтому система шаблонов Django удаляет символы HTML из плагина.

Шаблоны документов Django: http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs

Обратите внимание на самый первый пункт, autoescape. Я подозреваю, что через этот фильтр запускаются плагины.

Извините, у меня больше нет подробностей. Я не парень из Django-CMS.

...