3

我想在 Django 中净化用户输入。

我知道有Django Html Purifier但也许有更轻的东西?如果我希望允许用户使用的标签非常有限,例如 just<b>怎么办?也许我可以使用一些内置的 Django?

4

2 回答 2

5

django-bleach派生自 PHP 实现是常用的。

该项目在这里:https ://bitbucket.org/ionata/django-bleach

它的用法非常简单,根据文档似乎可以做你想做的事:

# Which HTML tags are allowed
BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'u', 'em', 'strong', 'a']

干杯:)

于 2012-11-24T09:20:37.680 回答
3

Python 有一个HTML Parser用于处理字符串中的标签。请也看看这个问题

您可以在此模块之上为您的用例编写一些内容。例如

from HTMLParser import HTMLParser

VALID_TAGS = ['b', 'a', 'strong']

class ForbiddenHTMLException(Exception):
    pass

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        if tag in VALID_TAGS:
            pass
        else:
            raise ForbiddenHTMLException

def validate(html):
    parser = MyHTMLParser()
    try:
        parser.feed(html)
        return True
    except ForbiddenHTMLException:
        return False

print validate('<b>This is bold Text</b>')
print validate('<p>This is not inside b tag.</p>')
于 2012-11-23T09:28:22.210 回答