django template filter remove html tags

Viewed 46341

In the following django template variable .Is it possible to remove the html tags via django template filters

 {{myvar|safe}}

The following would output an html like

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

To strip/remove HTML tags from an existing string we can use the strip_tags function.

import the strip_tags

from django.utils.html import strip_tags

simple string with html inside.

html = '<p>paragraph</p>'

print html # will produce: <p>paragraph</p>
 

stripped = strip_tags(html)
print stripped # will produce: paragraph

This is also available as a template tag:

{{ somevalue|striptags }}

If you want to remove only specific tags you need to use the removetags

from django.template.defaultfilters import removetags
html = '<strong>Bold...</strong><p>paragraph....</p>'
stripped = removetags(html, 'strong') # removes the strong only.
stripped2 = removetags(html, 'strong p') # removes the strong AND p tags.
 

Also available in template:

{{ value|removetags:"a span"|safe }}
Related