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
相关产品推荐
相关产品推荐

