一:代码追踪分析:
1:首先在路由位置开始追踪:
re_path(r'^authorizations/$', obtain_jwt_token),
2:第一层追踪:找到ObtainJSONWebToken
3:第二层追踪:父类是JSONWebTokenAPIView,序列化器是JSONWebTokenSerializer。

4:代码追踪上层,不追踪序列化器。

5:继续向下追踪开看看django自己定义的返回格式是怎样的呢??

发现追踪到配置文件指定的类了。我们导包继续追踪:
在任意位置导包:按住ctrl + 鼠标点击jwt_response_payload_handler 继续追踪。
from rest_framework_jwt.utils import jwt_response_payload_handler

6:返回到序号3追踪的位置:继续看看序列化器做了什么?
6.1:初始化方法:

6.2:最后一层校验方法:

二:如何自定义返回呢??
1:在自己项目任意位置重写jwt_response_payload_handler函数:
例如:我的项目位置:meiduo_mall.utils.jwt_response_handlers.jwt_response_payload_handler
def jwt_response_payload_handler(token, user=None, request=None):
return {
# 补充返回username和user_id字段
'username': user.username,
'user_id': user.id,
'token': token
}
2:在配置文件中指定这个函数的位置:
JWT_AUTH = {
'JWT_RESPONSE_PAYLOAD_HANDLER': 'meiduo_mall.utils.jwt_response_handlers.jwt_response_payload_handler'
}
浙公网安备 33010602011771号