django - Django 抽象字母验证器
问题描述
我正在编写一个将字母表作为参数并从该字母表生成加密安全随机字符串的字段。验证器还接受一个长度参数。这是模板:
from django.core.validators import RegexValidator
class AlphabetValidator(RegexValidator):
def __init__(self, alphabet, max_length):
pass
如您所见,这个想法是RegexValidator
用作基类。问题在于赋予字母表的灵活性,因为它可以包含所有内容。我只使用它来验证字母和数字或仅十六进制表示,但我想提前确保它对其他用途的安全。
另请注意,给定字母表中的任何字符都应按字面意思理解,包括$
、.
等。我的想法是将字母表包装在一个类中:"[" + alphabet "]"
. 当然,这意味着我需要逃跑-
并且]
. 我不确定[
。
我的问题是转义这三个字符是否足够?还有其他我应该考虑的吗?或者社区是否有更好的方法来建议完成同样的事情。
解决方案
回答自己,发现re.escape():
转义模式中的特殊字符。如果您想匹配其中可能包含正则表达式元字符的任意文字字符串,这很有用。
这就是我最终得到的结果:
self._alphabet = '^(%s){%d}$' % (re.escape(alphabet), max_length)
推荐阅读
- go - 使用 golang 将 DSA 密钥解析为 tls 配置对象
- python - 如何在不获取 ValueError 的情况下使用 plotly 库进行绘图?
- javascript - 尝试将 Response 对象读入 arrayBuffer 会导致错误 Failed To Fetch
- android - 在从 Firebase 实时数据库请求更多数据之前清除列表
- javascript - 函数内部声明的 Javascript 连接是否持久?
- c++ - 如何对代表数字的char执行乘法?
- python - 为什么我在 Python 中实现 RSA 算法很慢?
- sql - 如何获取行号列表组
- c - 复制字符串时的 Valgrind 内存检查
- javascript - 如何创建音频对象的副本