You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django点赞删除功能前端无法正确接收JSON响应问题排查

问题原因及修复方案

核心问题出在删除点赞的视图返回了HTTP 204状态码,这直接导致前端无法正常解析JSON:

为什么204会引发问题

HTTP 204(No Content)的标准规则是:服务器处理请求成功,但不返回任何响应内容。前端调用fetch后执行response.json()时,因为没有可解析的响应体,必然抛出解析错误——这就是你看到的前端无法接收正确反馈的原因。

而创建点赞的视图返回的是HTTP 201(Created),这个状态码允许携带响应体,所以前端能正常解析JSON数据。

快速修复

把LikesDeleteView中的返回状态码从204改成200(或者和创建接口一致用201也可以,200更通用):

# 修改LikesDeleteView的返回语句
return HttpResponse(return_value, status=200)

额外优化建议

  1. 明确指定响应类型:在返回HttpResponse时加上content_type='application/json',避免MIME类型解析异常:
    return HttpResponse(return_value, status=200, content_type='application/json')
    
  2. 使用Django自带的JsonResponse:替代手动json.dumps+HttpResponse,更简洁还能自动处理JSON格式和MIME类型:
    # 创建视图修改示例
    return JsonResponse({'likes_cnt': article.likes_cnt, 'liked_by_me': article.liked_by_me}, status=201)
    # 删除视图修改示例
    return JsonResponse({'likes_cnt': article.likes_cnt, 'liked_by_me': article.liked_by_me}, status=200)
    

修改后,删除点赞的接口会返回带JSON响应体的200状态码,前端就能正常解析数据并更新页面的点赞状态和计数了。

内容的提问来源于stack exchange,提问作者yoshitaka okada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:42:40