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

Django视图无法解析AJAX提交的FormData,返回WebKitFormBoundary内容

问题解决方法

问题根源

你提交的AJAX请求配置存在参数名拼写错误:jQuery的$.ajax方法中,指定请求内容类型的参数为小写开头的contentType,你代码中写的大写开头的ContentType属于无效参数,无法被jQuery识别。
这会导致请求头的Content-Type没有被正确设置为带边界值的multipart/form-data格式,Django无法正常解析表单数据,只能将整个请求体作为单个键值对存入QueryDict,所以你无法通过参数名拿到对应值。
另外你的提交事件没有阻止表单默认跳转行为,也可能导致请求异常。

解决步骤

  • 修正AJAX配置的参数名,将ContentType: false改为contentType: false
  • 在提交事件中添加阻止默认行为的逻辑,避免页面自动跳转
  • 建议为FormData变量添加局部变量声明,避免全局变量污染

修正后的完整JS代码如下:

messageSENDER.onsubmit = (e) => {
    // 阻止表单默认提交跳转
    e.preventDefault();
    const formdata = new FormData(messageSENDER);
    $.ajax({
        headers: {"X-CSRFToken": document.querySelector('[name=csrfmiddlewaretoken]').value},
        method: 'POST',
        processData: false,
        contentType: false,
        data: formdata,
        url : '/send/message/',
        success: function(m){
            messageSENDER.reset()
        }
    })
}

验证说明

修改后不需要调整原有Django视图代码,直接通过request.POST.get('partnerPK')、request.POST.get('content')就可以正常获取提交的参数值。如果有上传的文件,可通过request.FILES.get('files')获取。


内容的提问来源于stack exchange,提问作者محمد ناصر

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:45:03