为django身份验证中的电子邮件字段设置blank=False
我使用的是django内置的身份验证,对于该身份验证系统,我们会获得不同的字段,如用户名、电子邮件、密码等为django身份验证中的电子邮件字段设置blank=False,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我使用的是django内置的身份验证,对于该身份验证系统,我们会获得不同的字段,如用户名、电子邮件、密码等 Username默认情况下是必需的,也不是空的,但对于电子邮件,它不是必需的(即,它为空),这使得它也为空 现在为了使其成为必需,我添加了此代码 extra_kwags = {'email': {'required': True}} 我用blank尝试了同样的方法 extra_kwags = {'email': {'required': True, 'blank': False}} 但
Username
默认情况下是必需的,也不是空的,但对于电子邮件,它不是必需的(即,它为空),这使得它也为空
现在为了使其成为必需,我添加了此代码
extra_kwags = {'email': {'required': True}}
我用blank
尝试了同样的方法
extra_kwags = {'email': {'required': True, 'blank': False}}
但它给出了一个错误,即blank
不是有效的关键字
因此,我想知道是否有办法为django中的email字段设置blank=False
虽然我知道一种方法,那就是强制进行电子邮件验证,并通过电子邮件进行认证
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
但我想知道是否还有其他方法,因为我不想让它成为身份验证方法。在rest框架中,该选项名为
allow\u blank
所以你可以使用它,验证应该可以工作
from rest_framework.serializers import ModelSerializer
class YourUserSerializer(ModelSerializer):
...
class Meta:
model = YourUserModel
extra_kwargs = {'email': {'required': True, 'allow_blank': False}}
该选项在rest框架中命名为
allow\u blank
所以你可以使用它,验证应该可以工作
from rest_framework.serializers import ModelSerializer
class YourUserSerializer(ModelSerializer):
...
class Meta:
model = YourUserModel
extra_kwargs = {'email': {'required': True, 'allow_blank': False}}
blank
用于模型字段的选项,而不是表单字段。所以required
就足够了。至于required only,我们仍然可以传递空字符串。这就是为什么我想将blank设置为false,这样空字符串将返回error我认为required使null为false而不是blankno如果您在model字段中指定blank=True
,您使相应的表单字段不是必需的。我还通过首先删除必需的关键字进行了检查,即使没有电子邮件,我也可以提出请求,但在设置了必需之后,虽然我必须在请求中提及电子邮件,但我能够传递空字符串,因为值blank
用于模型字段的选项,而不是表单字段。所以required
就足够了。至于required only,我们仍然可以传递空字符串。这就是为什么我想将blank设置为false,这样空字符串将返回error我认为required使null为false而不是blankno如果您在model字段中指定blank=True
,您使相应的表单字段不是必需的。我还通过首先删除必需的关键字进行了检查,即使没有电子邮件,我也能够提出请求,但在设置了必需之后,尽管我必须在请求中提及电子邮件,但我能够将空字符串作为值传递。非常感谢。这就是我一直在寻找的。我错过了“允许”,非常感谢。这就是我一直在寻找的。我错过了“允许”