如果提供所有用戶名,密碼和電子郵件字段,我想在django-rest-auth中註冊用戶。 (我想實現令牌認證以從服務器獲得JSON響應。)電子郵件字段必填django.contrib.auth
django.contrib.auth.User
中的默認電子郵件字段是可選的。但是我想根據需要設置電子郵件地址以便在數據庫中註冊,以便在沒有電子郵件的情況下發出POST請求時用戶收到HTTP錯誤響應。
在項目中,我通過以下代碼註冊新用戶。
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', User.USERNAME_FIELD, "password", 'full_name',
'is_active', 'links',)
write_only_fields = ('password',)
read_only_fields = ('id',)
def create(self, validated_data):
print("Validated Data",validated_data)
if 'email' in validated_data:
user = get_user_model().objects.create(
username=validated_data['username']
)
user.set_email(validated_data['email'])
user.set_password(validated_data['password'])
user.save()
email = EmailMessage('Hello', 'World',
to=[validated_data['email']])
email.send()
user.is_active=False
return user
else:
return None
然而,上述給出:
創建()沒有返回一個對象實例
如何設置電子郵件字段爲必填字段?
有兩件事:完整的回溯將會非常有用,問題在於你在'create'過程中進行驗證(並且因爲它而返回'None')。你_must_從create方法返回一個用戶對象。 –
「完全回溯」是什麼意思?你能提供任何有關的文件嗎? 稍後我在UserSerializer中使用以下行。 電子郵件= EmailField(必需= True) 這種方式工作。這是正確的方法嗎? – saikat