Python和Django。从html中删除所有js

时间:2013-04-25 16:22:41

标签: javascript python html django wysiwyg

我想显示用户输入的html(来自WYSIWYG)。

但是我从html中删除js时遇到了一些问题。

以下是我的观点:

def bad_view(request):
    # in real project we got it from user
    bad_html = '<p onclick="alert(0)">:((</p><script>alert(0);</script>'
    return render(request, 'template.html', {'bad_html': bad_html})

这里的代码在我的模板中:

{{ bad_html|safe }}

bad_html应该像这个<p onclick="">:((</p>

从这个html中删除所有js的最佳方法是什么?

要删除<script>我可以使用正则表达式,但是onclick处理程序(以及其他js处理程序)呢?

感谢您的建议!

2 个答案:

答案 0 :(得分:1)

我建议使用漂白python库,它旨在处理各种特殊情况,并为您的问题提供完整的解决方案

http://bleach.readthedocs.org/en/latest/index.html

答案 1 :(得分:0)

我可以为django https://www.djangopackages.com/grids/g/forms/建议一个预建的解决方案 大多数都包含某种形式的过滤器示例。我实际上是在调查TinyMCE。

更多信息在这里Using safe filter in Django for rich text fields