Django抽象字母验证器

时间:2018-12-16 22:21:18

标签: django django-validation

我正在编写一个字段,该字段以字母作为参数,并从该字母生成加密安全的随机字符串。验证器还接受一个length参数。这是该模板:

from django.core.validators import RegexValidator

class AlphabetValidator(RegexValidator):

    def __init__(self, alphabet, max_length):
        pass

如您所见,其想法是使用RegexValidator作为基类。问题在于赋予字母的灵活性,因为它可以包含所有内容。我仅将其用于验证字母和数字或仅用于验证十六进制表示形式,但我想同时确保将其安全用于其他用途。

还要注意,给定字母中的任何字符都应按字面值使用,包括$.等。我想到的是将字母包装在一个类中:"[" + alphabet "]"。当然,这意味着我需要转义-]。我不确定[

我的问题是,转义这三个字符是否足够?还有其他我应该考虑的吗?还是社区是否有更好的方法来建议实现相同目标。

1 个答案:

答案 0 :(得分:0)

正在回答自己,发现re.escape()

  

在模式中转义特殊字符。如果您想   匹配可能具有正则表达式的任意文字字符串   其中的元字符。

这就是我最终得到的:

self._alphabet = '^(%s){%d}$' % (re.escape(alphabet), max_length)