我尝试在通过 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
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
有关系