我想在Django中净化用户输入。
我知道有Django Html Purifier但也许有更轻松的东西?如果我想让用户使用的标签非常有限,例如,只是<b>
?也许我可以使用内置的Django?
答案 0 :(得分:5)
django-bleach
。
项目在这里:https://bitbucket.org/ionata/django-bleach
它的使用非常简单,根据文档似乎可以做你想要的:
# Which HTML tags are allowed
BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'u', 'em', 'strong', 'a']
干杯:)
答案 1 :(得分:3)
Python有一个HTML Parser用于处理字符串中的标记。请同时查看this question。
您可以在此模块的顶部为您的用例撰写内容。例如
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>')