为django身份验证中的电子邮件字段设置blank=False

为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}} 但

我使用的是django内置的身份验证,对于该身份验证系统,我们会获得不同的字段,如用户名、电子邮件、密码等

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
,您使相应的表单字段不是必需的。我还通过首先删除必需的关键字进行了检查,即使没有电子邮件,我也能够提出请求,但在设置了必需之后,尽管我必须在请求中提及电子邮件,但我能够将空字符串作为值传递。非常感谢。这就是我一直在寻找的。我错过了“允许”,非常感谢。这就是我一直在寻找的。我错过了“允许”