django - 即使将属性名称用双引号括起来,也会出现 JSON 解码错误
问题描述
当我尝试发出发布请求以测试登录端点时,我得到“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)
解决方案
访问request.data,直接不要用json.loads()
.
此外,如果它是 DRF 视图 (APIView),则使用更多 DRF 选项(请求/响应/等),而不是 Django 选项。
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
)
推荐阅读
- django - 蟒蛇 | 如何在具有相同类的模板中显示 2 个模型信息
- javascript - 带有 AJAX 调用的 HTML 范围滑块到 Flask
- virtual-machine - 如何从主机操作系统中的 MQTT 代理中提取数据?
- html - 从下拉列表中选择值时在画外音发音中选择前缀
- r - R中的N+1循环-如何在循环的下一次迭代中使用第一个循环输出
- kubernetes - 从 GCP 快照创建的磁盘不会在 kubernetes 中调整大小
- python-3.x - 如何使用 Pandas 导出 Excel 数据透视表?
- angular - 通过 Angular JS 调用 API 时文件为空。但是通过邮递员上传
- oracle - 如何解释 Oracle 解释计划中的成本与字节数?
- java - 如何在基于 SpringBoot 构建的 Java REST API 中查找源代码的哪一部分执行时间更长?