Django RegexValidator 未按预期工作
我在使用RegexValidator类时遇到了问题。
我想在一个字符字段中允许输入一些特定的HTML标签,比如
、
- 和
- 。我找到的正则表达式正好满足我的需求,但我在实现它时遇到了困难。
<\/?(?!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 个回答
1
自己写一个验证器,如果正则表达式匹配,就抛出一个错误,因为这不应该被允许。
这里有关于验证器的更多信息。
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])