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

Python 如何使Django表单字段仅包含字母数字字符,python,django,Python,Django,我有这个型号 name = models.CharField(max_length=50, blank=True, null=True) email = models.EmailField(max_length=50, unique=True) 我希望用户不能在这两个字段中使用字母数字以外的任何其他字符 有什么办法吗?您可以使用限制字段接受的内容。A在这里可以做到: from django.core.validators import RegexValidator alphanumeric

我有这个型号

name = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(max_length=50, unique=True)
我希望用户不能在这两个字段中使用字母数字以外的任何其他字符

有什么办法吗?

您可以使用限制字段接受的内容。A在这里可以做到:

from django.core.validators import 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])

请注意,已经有一个可以为您验证电子邮件地址的;上面的
字母数字
验证程序将不允许使用有效的电子邮件地址。

代替RegexValidator,只在表单属性中提供验证,如

        class StaffDetailsForm(forms.ModelForm):
             first_name = forms.CharField(required=True,widget=forms.TextInput(attrs={'class':'form-control' , 'autocomplete': 'off','pattern':'[A-Za-z ]+', 'title':'Enter Characters Only '}))
等等

否则,您将不得不处理视图中的错误。 这对我来说很有效尝试这个简单的方法。。。
这将允许用户只输入比您想要的略宽的字母表和空格,但您也可以使用
SlugField

Slug基本上是某事物的短标签,只包含 字母、数字、下划线或连字符。它们通常用于 网址。例如,在典型的博客条目URL中:


用户可能难以使用
字母数字验证程序添加有效的电子邮件地址;)@阿拉斯代尔。我只是想了解这个想法。我将使用这个
[A-Za-z0-9@$%^&+=]{6,}
。oki试过了,它说alphnumeric的名字还没有定义。我已经在外面申报了Model@user1958218:有一个专用的电子邮件验证程序。对不起,我在那里输入了一个错别字,请重新复制粘贴。有没有办法直接响应用户提交的密钥来实现这一点?而不是等待表单提交后?记住这只是前端验证!!您还应该添加RegexValidator验证来验证后端中该字段的值!
field_name = models.SlugField(max_length=200, **options)