如何使Django表单字段仅包含字母数字字符

use*_*218 27 python django

我有这个模型

name = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(max_length=50, unique=True)
Run Code Online (Sandbox Code Playgroud)

我希望用户不应该在两个字段中使用除字母数字之外的任何其他字符.

有什么办法吗?

Mar*_*ers 62

您可以使用验证器来限制字段接受的内容.A RegexValidator会在这里诀窍:

alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', 'Only alphanumeric characters are allowed.')

name = models.CharField(max_length=50, blank=True, null=True, validators=[alphanumeric])
email = models.EmailField(max_length=50, unique=True, validators=[alphanumeric])
Run Code Online (Sandbox Code Playgroud)

请注意,已经有一个validate_email验证器可以为您验证电子邮件地址; alphanumeric上面的验证器不允许有效的电子邮件地址.

  • 用户可能难以使用“字母数字”验证器添加有效的电子邮件地址;) (2认同)