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

DRF自定义ObtainAuthToken post方法 响应返回token和用户姓名

DRF自定义Token接口返回额外用户姓名实现方案

你只需要在现有CreateTokenView中重写父类的post方法,在原有返回token的逻辑基础上追加用户姓名字段即可,不需要修改现有序列化器代码。

改造后的views.py代码

from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.response import Response
from rest_framework.authtoken.models import Token
# 保留你原有的其他导入,比如api_settings、AuthTokenSerializer等

class CreateTokenView(ObtainAuthToken):
    """Create a new auth token for user"""
    serializer_class = AuthTokenSerializer
    renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES

    def post(self, request, *args, **kwargs):
        # 走原有序列化器校验逻辑,认证失败会自动抛400错误
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        # 拿到对应用户的token,不存在就自动创建
        token, _ = Token.objects.get_or_create(user=user)
        # 响应内容追加用户姓名,字段名和取值可根据你的项目实际情况调整
        return Response({
            'token': token.key,
            'user_name': user.name
        })

注意事项

  • 如果使用Django默认内置User模型,没有自定义name字段,可以把取值逻辑替换为f"{user.first_name} {user.last_name}".strip()适配原有姓名字段
  • 如果需要额外返回用户ID、邮箱、角色等其他信息,直接在返回的字典中追加对应键值对即可,逻辑完全一致
  • 你现有AuthTokenSerializer的逻辑已经正确把认证后的user对象存入校验后的数据,不需要做任何改动

内容的提问来源于stack exchange,提问作者kubaSpolsky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:51:21