如何在 TokenSerializer dj-rest-auth 中显示用户

问题描述 投票:0回答:1

我尝试在通过 dj-rest-auth 成功登录后返回 UserSerializer。

我按照中所述的步骤进行操作 登录`rest-auth`后,如何返回更多信息? 有类似的问题,但登录后仍然不显示有关用户的信息。

成功登录后我得到什么

REST_AUTH_SERIALIZERS = {
    'TOKEN_SERIALIZER': 'blink.user.serializers.TokenSerializer',
    'USER_DETAILS_SERIALIZER': 'blink.user.serializers.UserSerializer'
}
#settings.py
class UserSerializer(serializers.ModelSerializer):

    def __init__(self, *args, **kwargs):
        exclude_fields = kwargs.pop('exclude_fields', None)
        super(UserSerializer, self).__init__(*args, **kwargs)
        if self.context and 'view' in self.context and self.context['view'].__class__.__name__ == 'UsersView':
            exclude_fields = ['subscription', 'avatar', 'file']
        if exclude_fields:
            for field_name in exclude_fields:
                self.fields.pop(field_name)

    class Meta:
        fields = ('id', 'username', 'email', 'last_login', 'first_name', 'last_name')
        model = User

class TokenSerializer(serializers.ModelSerializer):
    user = UserSerializer()

    class Meta:
        model = TokenModel
        fields = '__all__'

#User.serializers.py
python django django-rest-framework django-rest-auth dj-rest-auth
1个回答
0
投票
class TokenSerializer(serializers.ModelSerializer):
    user = UserSerializer()
    email = serializers.EmailField(source='user.email', read_only=True)
    full_name = serializers.CharField(source='user.get_full_name', read_only=True)

    class Meta:
        model = TokenModel
        fields = ['key', 'created', 'user', 'email', 'full_name']

如果您想显示某些字段,这就是您可以显示的方式。确保您的

TokenModel
User model

有关系
© www.soinside.com 2019 - 2024. All rights reserved.