Django RegexValidator没有按预期工作

时间:2014-06-22 17:04:25

标签: python regex django django-models django-admin

我坚持使用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。当我实现上面的代码时,似乎所有表单提交(使用管理界面)都无法验证。

有什么想法吗?

由于

1 个答案:

答案 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])