使用Django Rest+;返回的不仅仅是身份验证令牌;乔瑟?
我正在使用Django REST和Djoser作为身份验证服务。但是,当向djoser auth端点发出post请求时,例如,使用Django Rest+;返回的不仅仅是身份验证令牌;乔瑟?,django,django-rest-framework,djoser,Django,Django Rest Framework,Djoser,我正在使用Django REST和Djoser作为身份验证服务。但是,当向djoser auth端点发出post请求时,例如,../auth/token/login,我得到的唯一响应是auth\u token:xxxxx 例如,如果我成功提出post请求,例如: { "username": "joe@gmail.com", "password": "test12345" } 我的回答是 “身份验证令牌”:“XXXXXXXX” 但我想检索的不仅仅是一个令牌,例如 "auth_token"
../auth/token/login
,我得到的唯一响应是auth\u token:xxxxx
例如,如果我成功提出post请求,例如:
{
"username": "joe@gmail.com",
"password": "test12345"
}
我的回答是
“身份验证令牌”:“XXXXXXXX”
但我想检索的不仅仅是一个令牌,例如
"auth_token": "XXXXXXXX",
"user_id": 8
您知道如何实现这一点吗?创建您自己的自定义令牌获取视图,如下所示
from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
class TokenObtainView(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, created = Token.objects.get_or_create(user=user)
custom_response = {
'token': token.key,
'user_id': user.id
}
return Response(custom_response)
现在,您应该使用端点,
path/to/your/custom/token/view/
来获取自定义响应。创建您自己的自定义token获取视图,如下所示
from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
class TokenObtainView(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, created = Token.objects.get_or_create(user=user)
custom_response = {
'token': token.key,
'user_id': user.id
}
return Response(custom_response)
现在,您应该使用端点,
path/to/your/custom/token/view/
来获得定制的响应。问题有点不清楚,您想解决什么问题?既然您发送用户名和密码来获取令牌,那么您真的需要/想要在响应中获取它们吗?基本上,当我使用用户名和密码向../auth/token/login
发出post请求时-如果该密码和用户名有效,我将以“auth\u令牌”:“xxxxx”
的形式返回响应。我想返回类似于“auth_token”:“xxxx”,“user_id”:8
您需要自定义Djoser使用的类。Django文档中已经有一个很好的示例,可以做您想要做的事情:,请参阅CustomAuthToken(获取AuthToken)类示例。问题有点不清楚,您想解决什么问题?既然您发送用户名和密码来获取令牌,那么您真的需要/想要在响应中获取它们吗?基本上,当我使用用户名和密码向../auth/token/login
发出post请求时-如果该密码和用户名有效,我将以“auth\u令牌”:“xxxxx”
的形式返回响应。我想返回类似于“auth_token”:“xxxx”,“user_id”:8
您需要自定义Djoser使用的类。Django文档中已经有一个很好的示例,可以执行您想要的操作:,请参见CustomAuthToken(获取AuthToken)类示例。