фильтр шаблонов django удалить html-теги
в следующей переменной шаблона django .Можно ли удалить HTML-теги через фильтры шаблонов django
{{myvar|safe}}
следующее выведет html как
<div>sddfdsfsdfsdf sd fsdf sd fsdf </div><a>This link</a><img src="some source" />
2 ответов
вы смотрели striptags
? Это превратит ваш HTML в это (минус подсветка синтаксиса This
, конечно):
sddfdsfsdfsdf sd fsdf sd fsdf This link
но имейте в виду, что этот фильтр шаблонов использует regex чтобы удалить теги HTML. как известно, regexes не являются правильным инструментом для работы с HTML большую часть времени. Если ваш HTML приходит извне, обязательно санируйте его с помощью реального парсера HTML, например lxml.html.clean
.
striptags
делает все возможное, чтобы удалить все [X]HTML-теги.
например:
{{ myvar|striptags }}
если myvar <b>Joel</b> <button>is</button> a <span>slug</span>
, выход будет Joel is a slug
.
вы также можете использовать strip_tags в коде Python, т. е. в форме.
например, в виде чистого метода:
class AddressForm(forms.ModelForm):
class Meta:
model = Address
def clean(self):
from django.utils.html import strip_tags
cleaned_data = super(AddressForm, self).clean()
cleaned_data['first_name'] = strip_tags(cleaned_data.get('first_name'))
return cleaned_data
посмотреть Django HTML Utils, также проверьте это простое Django HTML дезинфицирующее приложение.