You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:12:44