如何在dj-rest-auth的TokenSerializer中返回用户信息?
问题:dj-rest-auth登录成功后无法返回UserSerializer数据
我想在使用dj-rest-auth登录成功后,返回UserSerializer序列化的用户信息,参考过相关解决方案,但登录后仍只返回token,没有用户详情。
以下是我的代码配置:
settings.py
REST_AUTH_SERIALIZERS = { 'TOKEN_SERIALIZER': 'blink.user.serializers.TokenSerializer', 'USER_DETAILS_SERIALIZER': 'blink.user.serializers.UserSerializer' }
User.serializers.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/models.py
from django.db import models from django.contrib.auth.models import AbstractUser from blink.common.models import Base from django.utils.translation import gettext_lazy as _ from django.utils import timezone class User(AbstractUser): username = models.CharField( _('username'), max_length=150, default='', unique=True ) def __str__(self): return str(self.username) class Meta: db_table = 'user' verbose_name = _('User') verbose_name_plural = _('Users')
内容的提问来源于stack exchange,提问作者Damir Talipov
相关产品推荐
相关产品推荐

