django模板过滤器如何删除html标签?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (311)

在下面的Django模板变量中。是否可以通过Django模板过滤器删除html标记?

 {{myvar|safe}}

下面将输出类似于

     <div>sddfdsfsdfsdf sd fsdf sd fsdf </div><a>This link</a><img src="some source" />
提问于
用户回答回答于

striptags

尽一切努力去除所有[X] HTML标签。

例如:

{{ myvar|striptags }}

如果myvar是<b>Joel</b> <button>is</button> a <span>slug</span>,输出将是Joel is a slug

你也可以在你的python代码中使用strip_tags,即在一个表单中。

例如,在表单清理方法中:

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应用程序

用户回答回答于

striptags。它会把你的HTML变成这个:

sddfdsfsdfsdf sd fsdf sd fsdf This link

但请注意,此模板过滤器使用正则表达式来去除HTML标记。正如我们所知,大多数情况下,正则表达式并不是使用HTML的正确工具。如果您的HTML来自外部,请确保使用真正的HTML解析器进行清理,例如lxml.html.clean

扫码关注云+社区

领取腾讯云代金券