如何在 Django Rest Framework 的前端更改序列化用户模型的字段名称?
How to change the field name of Serialzed User Model on frontend in Django Rest Framework?
我正在 Django DRF 中使用 REST API 制作一个简单的 Login/Logout 应用程序。我为此行为使用默认 User
模型。
在登录 API 中,我想通过电子邮件对用户进行身份验证,因此我使用 ModelBackend
编写了自定义身份验证。一切正常。
但是,我想将登录API前面的单词username
更改为email
。我尝试使用 source
属性,但它没有改变。有什么简单的方法吗?我正在寻找类似 verbose_name
的东西,它在 Django 模型中使用。
我的serializers.py
是:
class LoginSerializer(serializers.Serializer):
username = serializers.CharField(source='Email')
password = serializers.CharField()
def validate(self, data):
user = authenticate(**data)
if user and user.is_active:
return user
raise serializers.ValidationError('Incorrect Credentials Passed.')
同样,我使用的是默认 User
模型,我不想 overwrite/override/extend User
模型。我只想将前端字段 username
的名称更改为 email.
我们将不胜感激任何帮助。
您需要将名为 email
而不是 username
的值传递给您的 ModelBackend
子类:
class LoginSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
def validate(self, data):
user = authenticate(**{'email': data['username'], 'password': data['password']})
if user and user.is_active:
return user
raise serializers.ValidationError('Incorrect Credentials Passed.')
我正在 Django DRF 中使用 REST API 制作一个简单的 Login/Logout 应用程序。我为此行为使用默认 User
模型。
在登录 API 中,我想通过电子邮件对用户进行身份验证,因此我使用 ModelBackend
编写了自定义身份验证。一切正常。
但是,我想将登录API前面的单词username
更改为email
。我尝试使用 source
属性,但它没有改变。有什么简单的方法吗?我正在寻找类似 verbose_name
的东西,它在 Django 模型中使用。
我的serializers.py
是:
class LoginSerializer(serializers.Serializer):
username = serializers.CharField(source='Email')
password = serializers.CharField()
def validate(self, data):
user = authenticate(**data)
if user and user.is_active:
return user
raise serializers.ValidationError('Incorrect Credentials Passed.')
同样,我使用的是默认 User
模型,我不想 overwrite/override/extend User
模型。我只想将前端字段 username
的名称更改为 email.
我们将不胜感激任何帮助。
您需要将名为 email
而不是 username
的值传递给您的 ModelBackend
子类:
class LoginSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
def validate(self, data):
user = authenticate(**{'email': data['username'], 'password': data['password']})
if user and user.is_active:
return user
raise serializers.ValidationError('Incorrect Credentials Passed.')