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

Django调用auth接口获取Token时如何同时返回用户名

解决方案

你现在用的是DRF默认的Token获取视图,该视图默认仅返回token字段,按以下步骤修改即可实现需求:


步骤1:在views.py中添加自定义Token获取视图

导入父类并继承重写返回逻辑,代码如下:

# 先在顶部导入需要的依赖
from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
from rest_framework.response import Response

# 新增自定义视图类
class CustomAuthToken(ObtainAuthToken):
    def post(self, request, *args, **kwargs):
        # 复用原有用户名密码校验逻辑
        serializer = self.serializer_class(data=request.data, context={'request': request})
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        # 获取或创建对应用户的Token
        token, created = Token.objects.get_or_create(user=user)
        # 自定义返回字段
        return Response({
            "username": user.username,
            "token": token.key
        })

步骤2:修改urls.py中的接口路由

将原来指向默认obtain_auth_token的/auth/路由,替换为指向你自定义的视图,示例代码如下:

from django.urls import path
# 导入你写的CustomAuthToken视图
from .views import CustomAuthToken

urlpatterns = [
    # 替换原有auth接口的路由配置
    path('auth/', CustomAuthToken.as_view(), name='custom_token_auth'),
    # 你的其他路由保持不变
]

修改完成后重启服务,再调用http://127.0.0.1:8000/auth/接口,就会同时返回username和token字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:01