当我尝试发出发布请求以测试登录端点时,出现“ JsonDecodeError”。
登录视图
class Login(APIView):
def post(self,request):
data = str(request.data["json"])
dd = json.loads(data)
phone_number = dd["phone_number"]
user = authenticate(phone_number=phone_number)
if user is not None:
token = Token.objects.get_or_create(user=user)
print(token[0])
login(request, user)
data = {
'message': 'valid',
'token': str(token[0])
}
else:
data = {
'message': 'invalid'
}
return JsonResponse(data)
答案 0 :(得分:1)
访问request.data,请不要直接使用json.loads()
重新解析它。
此外,如果是DRF视图(APIView),而不是Django,则使用更多DRF选项(请求/响应/等)。
from rest_framework import status
from rest_framework.response import Response
class Login(APIView):
def post(self,request):
phone_number = request.data.get("phone_number")
user = None
if phone_number:
user = authenticate(phone_number=phone_number)
if user:
token = Token.objects.get_or_create(user=user)
login(request, user)
data = {
'message': 'valid',
'token': str(token[0])
}
return Response(data)
return Response(
{'message': 'invalid'},
status=status.HTTP_403_FORBIDDEN
)