真的很困惑,因为几天前这个功能还在工作,我没有对我的代码做任何实质性的修改。
我得到了这个回溯:
Traceback (most recent call last):
File "C:\Users\15512\anaconda3\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "C:\Users\15512\anaconda3\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
File "C:\Users\15512\anaconda3\lib\site-packages\django\core\serializers\json.py", line 105, in default
return super().default(o)
File "C:\Users\15512\anaconda3\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes is not JSON serializable总之,我向Twilio库发送了一个名称,期望接收到一个JWT_token。然后,API端点将返回带有键: title和jwt_token的dict。
这就是我对终点的看法:
class TokenView(View):
def get(self, request, username, *args, **kwargs):
voice_grant = grants.VoiceGrant(
outgoing_application_sid=settings.TWIML_APPLICATION_SID,
incoming_allow=True,
)
access_token = AccessToken(
settings.TWILIO_ACCOUNT_SID,
settings.TWILIO_API_KEY,
settings.TWILIO_API_SECRET,
identity=username
)
access_token.add_grant(voice_grant)
jwt_token = access_token.to_jwt()
full_data = {'token': jwt_token}
# print(type(jwt_token))
return JsonResponse(json.dumps(full_data), content_type="application/json", safe=False)我还试图在返回语句中这样做:
JsonResponse({"token": jwt_token})发布于 2022-06-10 18:54:35
access_token.to_jwt()返回一个byte,只需解码令牌:access_token.to_jwt().decode()
完整代码:
class TokenView(View):
def get(self, request, username, *args, **kwargs):
voice_grant = grants.VoiceGrant(
outgoing_application_sid=settings.TWIML_APPLICATION_SID,
incoming_allow=True,
)
access_token = AccessToken(
settings.TWILIO_ACCOUNT_SID,
settings.TWILIO_API_KEY,
settings.TWILIO_API_SECRET,
identity=username
)
access_token.add_grant(voice_grant)
jwt_token = access_token.to_jwt()
full_data = {'token': jwt_token.decode()}
# print(type(jwt_token))
return JsonResponse(json.dumps(full_data), content_type="application/json", safe=False)那应该管用。
https://stackoverflow.com/questions/72578461
复制相似问题