我坚持使用RegexValidator Class。
我正在尝试允许在字符字段中输入一些已定义的HTML(p,ul,li)标记。以下正则表达式正是我所需要的,但我很难实现它。
<\/?(?!p|ul|li)[^/>]*>
我试图通过以下方式将其推入我的Django模型中:
description = models.CharField(max_length = 255, validators=[
RegexValidator(
regex = r'<\/?(?!p|ul|li)[^/>]*>',
message = 'Disallowed Tags',
code = 'DISALLOWED_TAGS',
),
],
)
我正在使用Django 1.6。当我实现上面的代码时,似乎所有表单提交(使用管理界面)都无法验证。
有什么想法吗?
由于
答案 0 :(得分:1)
进行自己的验证,如果正则表达式匹配则抛出错误,因为它不应该被允许 here有关验证者的更多信息。
import re
from django.core.exceptions import ValidationError
def test(val):
if re.match('<\/?(?!p|ul|li)[^/>]*>', val):
raise ValidationError('Disallowed Tags')
class Foo(models.Model):
name = models.CharField(max_length = 150, validators=[test])