我有这个模型
name = models.CharField(max_length=50, blank=True, null=True) email = models.EmailField(max_length=50, unique=True)
我希望用户在这两个字段中不能使用除字母数字以外的任何其他字符。有什么办法吗?
rqdpfwrv1#
你可以使用validator来限制字段接受的内容,RegexValidator就可以做到这一点:
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验证器可以为您验证电子邮件地址;上面的alphanumeric验证程序将不允许有效的电子邮件地址.
validate_email
alphanumeric
3ks5zfa02#
代替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 '}))
等等...否则你将不得不处理视图中的错误。它为我工作尝试这个简单的方法...这将允许用户只输入字母和空格
yyhrrdl83#
这比您想要的要宽一些,但是您也可以使用SlugField:Slug基本上是一个简短的标签,只包含字母、数字、下划线或连字符。它们通常用于URL。例如,在一个典型的博客条目URL中:https://www.geeksforgeeks.org/add-the-slug-field-inside-django-model/
SlugField
field_name = models.SlugField(max_length=200, **options)
vyswwuz24#
使用django表单进行电子邮件验证*还使用丹麦语特殊字符 *
import re email_regex = r'\b[A-Za-z0-9._%+-øØæÆåÅ]+@[A-Za-z0-9.-øØæÆåÅ]+\.[A-Z|a-z]{2,}\b' if email and not re.search(email_regex, email): raise forms.ValidationError({"email": "Enter a valid email"})
4条答案
按热度按时间rqdpfwrv1#
你可以使用validator来限制字段接受的内容,
RegexValidator
就可以做到这一点:请注意,已经有一个
validate_email
验证器可以为您验证电子邮件地址;上面的alphanumeric
验证程序将不允许有效的电子邮件地址.3ks5zfa02#
代替RegexValidator,只在表单属性中提供验证,如...
等等...
否则你将不得不处理视图中的错误。它为我工作尝试这个简单的方法...这将允许用户只输入字母和空格
yyhrrdl83#
这比您想要的要宽一些,但是您也可以使用
SlugField
:Slug基本上是一个简短的标签,只包含字母、数字、下划线或连字符。它们通常用于URL。例如,在一个典型的博客条目URL中:https://www.geeksforgeeks.org/add-the-slug-field-inside-django-model/
vyswwuz24#
使用django表单进行电子邮件验证*还使用丹麦语特殊字符 *