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

Django中request.POST.get()返回NoneType,表单数据无法捕获问题

问题排查与解决步骤

1 优先排查重定向丢包问题

这是Django POST请求参数丢失的最常见诱因:
Django默认开启APPEND_SLASH配置,若请求路径与urls.py中定义的路径斜杠不匹配(比如urls里定义的是compute/带斜杠,但实际请求的是compute不带斜杠),会触发301重定向,重定向过程中POST请求会自动转为GET请求,所有POST参数都会丢失。
验证方法:在compute视图第一行加入以下代码,查看输出:

print("请求方法:", request.method, "请求路径:", request.path)

如果输出请求方法为GET,即可确认是该问题。
解决方案:保持请求路径与urls.py定义的路径完全一致,建议urls中compute路径统一带末尾斜杠,模板中使用{% url "compute" %}自动生成匹配的路径即可。

2 验证前端参数是否正常传递

首先在浏览器控制台验证前端是否正确获取、传递参数:
在JS代码formData.append逻辑后加入以下调试代码:

// 打印formData所有键值对
for (let [key, value] of formData.entries()) {
    console.log(key, value);
}

同时打开浏览器开发者工具的「网络」面板,点击提交后查看compute请求的「载荷」标签,确认Form Data中存在destination等字段,且对应值与输入一致。

3 简化FormData构造逻辑,避免手动拼接错误

手动逐个append字段容易出现拼写、取值错误,建议直接用表单实例初始化FormData:

第一步:给所有input加上name属性

<span>Destination (departement) <input type="text" id="destination" name="destination"></span>
<br>
<br>
<span>Nombre de palettes <input type="text" id="nombre_de_palettes" name="nombre_de_palettes"></span>
<br>
<br>
<span>Poids par palette <input type="text" id="poids_par_palette" name="poids_par_palette"></span>
<br>
<br>
<span>Optimiser prix <input type="checkbox" id="Optimisation_prix" name="Optimisation_prix" value="1"></span>
<br>
<br>
<span>Optimiser délai de livraion <input type="checkbox" id="Optimisation_delai" name="Optimisation_delai" value="1"></span>

第二步:替换JS中的FormData构造逻辑

删除原有手动append的5行代码,替换为:

let form = document.querySelector('form');
let formData = new FormData(form);

该方法会自动收集所有带name属性的表单字段值,无需手动拼接。

4 复选框取值修正(可选,解决后续逻辑问题)

当前复选框的取值逻辑存在问题:不管是否勾选,input.value都会返回默认值on,需要按勾选状态取值:
如果选择手动构造FormData,可将对应append逻辑改为:

formData.append('Optimisation_prix', document.querySelector("#Optimisation_prix").checked ? '1' : '0');
formData.append('Optimisation_delai', document.querySelector("#Optimisation_delai").checked ? '1' : '0');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:09:01