В django
нет фильтра, который может делать то, что вам нужно: убрать javascript и оставить html.
Вы можете создать собственный шаблонный фильтр для этого:
from django import template
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
from django.utils.encoding import force_unicode
import re
register = template.Library()
@register.filter
@stringfilter
def stripjs(value):
stripped = re.sub(r'<script(?:\s[^>]*)?(>(?:.(?!/script>))*</script>|/>)', \
'', force_unicode(value), flags=re.S)
return mark_safe(stripped)
(Куда поместить шаблоны фильтров / теги: Пользовательские теги и фильтры шаблонов / Макет кода )
Краткое объяснение:
Создать папку с именем templatetags
в папке вашего приложения.Добавьте пустой файл __init__.py
(чтобы он был пакетом) и файл модуля, который будет содержать фильтр, my_filters.py
.Скопируйте код в этот файл.
В файле шаблона добавьте (перед любым первым использованием фильтра): {% load my_filters %}
Использование:
{% if posts %}
{% for p in posts %}
{{ p|stripjs }}
{% endfor %}
{% endif %}