代码之家  ›  专栏  ›  技术社区  ›  Neha AK

如何在Django Rest框架中更改前端序列化用户模型的字段名?

  •  0
  • Neha AK  · 技术社区  · 2 年前

    我正在使用Django DRF中的REST API制作一个简单的登录/注销应用程序。我使用默认值 User 这种行为的模型。

    在登录API中,我希望通过电子邮件对用户进行身份验证,因此我使用 ModelBackend .一切正常。

    但是,我想换个词 username email 在登录API的前面。我试着用 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.')
    

    同样,我使用的是默认值 使用者 模型,我不想覆盖/覆盖/扩展 使用者 模型我只想更改字段的名称 用户名 在前端显示为 电子邮件 .

    任何帮助都将不胜感激。

    1 回复  |  直到 2 年前
        1
  •  1
  •   Alain Bianchini    2 年前

    您需要传递一个名为 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.')