すべてのユーザー名、パスワード、および電子メールフィールドが提供されている場合、django-rest-auth にユーザーを登録したいと考えています。(トークン認証も実装して、サーバーから JSON 応答を取得したいと考えています。)
のデフォルトの電子メール フィールド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() はオブジェクト インスタンスを返しませんでした
電子メール フィールドを必須フィールドとして設定するにはどうすればよいですか?