【发布时间】:2013-06-18 09:22:25
【问题描述】:
我有这个模型
name = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(max_length=50, unique=True)
我希望用户不能在两个字段中使用除字母数字以外的任何其他字符。
有什么办法吗?
【问题讨论】:
我有这个模型
name = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(max_length=50, unique=True)
我希望用户不能在两个字段中使用除字母数字以外的任何其他字符。
有什么办法吗?
【问题讨论】:
您可以使用validator 来限制该字段接受的内容。 RegexValidator 可以在这里解决问题:
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])
请注意,已经有一个validate_email validator 可以为您验证电子邮件地址;上面的 alphanumeric 验证器不允许使用有效的电子邮件地址。
【讨论】:
alphanumeric 验证器添加有效的电子邮件地址;)
[A-Za-z0-9@#$%^&+=]{6,}。可以吗
而不是 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 中: https://www.geeksforgeeks.org/add-the-slug-field-inside-django-model/
field_name = models.SlugField(max_length=200, **options)
【讨论】: