Фильтр шаблонов Django удалить HTML-теги - PullRequest
21 голосов
/ 07 июля 2011

В следующей переменной шаблона django. Можно ли удалить теги html с помощью фильтров шаблона django

 {{myvar|safe}}

Следующее будет выводить HTML как

     <div>sddfdsfsdfsdf sd fsdf sd fsdf </div><a>This link</a><img src="some source" />

Ответы [ 2 ]

36 голосов
/ 07 июля 2011

Вы смотрели на striptags?Это превратит ваш HTML в это (минус подсветка синтаксиса This, конечно):

sddfdsfsdfsdf sd fsdf sd fsdf This link

Но имейте в виду, что этот шаблонный фильтр использует регулярное выражение для удаленияHTML-теги. Как мы знаем , регулярные выражения не являются подходящим инструментом для работы с HTML в большинстве случаев.Если ваш HTML поступает извне, убедитесь, что его обработали реальным анализатором HTML, например, lxml.html.clean.

16 голосов
/ 22 января 2015

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 Sanitizer App .

...