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

React-Django简易博客应用中如何在Axios Delete请求中携带Body并在Django后端获取

解决Django后端获取Delete请求Body参数的问题

首先,咱们先从前端的axios请求开始排查——你当前的axios.delete用法有问题,这可能是后端拿不到数据的第一个原因。

第一步:修正前端的Delete请求写法

Axios的delete方法参数格式是:axios.delete(url[, config]),你不能直接把blog_title作为第二个参数传进去,要把请求体数据放在config的data字段里。另外,建议把Content-Type换成application/json,这样前后端解析起来更方便(DRF默认支持JSON格式)。修改后的代码如下:

class BlogPost extends React.Component {
  deleteBlog = (blog_title) => {
    const headers = {
      "Content-Type": "application/json",
      Accept: "application/json",
    }
    // 正确的axios.delete写法:数据放在config.data里
    axios.delete("delete_blog/", {
      headers: headers,
      data: { title: blog_title }
    }).then(res => {
      console.log(res.data);
      // 这里可以添加删除后的状态更新逻辑,比如刷新博客列表
    }).catch(err => {
      console.error(err);
    })
  }

  render() {
    return (
      <div>
        {/* 注意map要加key,onClick里要调用this.deleteBlog */}
        { this.state.blogs.map(res => (
          <div key={res.id}> 
            {res.blog_title} 
            <button onClick={() => this.deleteBlog(res.blog_title)}>删除</button> 
          </div>
        ))}
      </div>
    )
  }
}

第二步:后端Django获取Delete请求的Body

你用的是DRF的APIView,这就好办了——DRF会自动根据请求的Content-Type解析请求体,把数据放到request.data里,不管是POST、PUT还是DELETE请求都能直接用。

修改你的views.py代码:

from rest_framework.views import APIView
from rest_framework.response import Response

class BlogPost(APIView):
  def post(self, request, *args, **kwargs):
    # 你的POST逻辑
    pass

  def delete(self, request, *args, **kwargs):
    # 直接从request.data里拿参数
    blog_title = request.data.get('title')
    print("要删除的博客标题:", blog_title)
    
    # 这里写你的删除逻辑,比如根据title查询并删除博客
    # BlogModel.objects.filter(blog_title=blog_title).delete()
    
    return Response({"message": f"博客{blog_title}已删除"})

为什么self.request.POST拿不到数据?

Django原生的request.POST只会解析POST请求中application/x-www-form-urlencoded或multipart/form-data格式的表单数据,对于DELETE请求的请求体,Django不会自动解析到POST这个QueryDict里,所以你打印出来是空的。而DRF的request.data会处理所有HTTP方法的请求体,不管是JSON还是表单格式,都能正确解析。

如果不用DRF,用原生Django视图的话,你需要自己解析request.body:

import json

def delete(request):
    # 解析JSON格式的请求体
    body_data = json.loads(request.body)
    blog_title = body_data.get('title')
    # 后续逻辑...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:32:31