python - django:request.POST.get() 返回 NoneType
问题描述
我是从 html 表单获取的数据中工作的。
我目前无法在服务器端捕获数据。每个输入都在服务器上返回“NoneType”。
我觉得我尝试了在这里可以找到的所有东西,特别是在 html 表单中进行更改id
,name
但没有任何效果。
这是我到目前为止得到的:
视图.py:
def quadriatransport_simulationView(request):
return render(request, "simulation.html")
@csrf_exempt
def compute(request):
destination = request.POST.get("destination")
nombre_de_palettes = request.POST.get("nombre_de_palettes")
poids_par_palette = request.POST.get("poids_par_palette")
Optimisation_prix = request.POST.get("Optimisation_prix")
Optimisation_delai = request.POST.get("Optimisation_delai")
result = {"destination":destination}
print(result)
return JsonResponse({"operation_result": result})
results
返回一个字典 where destination
isNone
现在这是我在网页上能够做的事情
<form method="POST">
{% csrf_token %}
<label><h3>Input variables to calculate EOQ:</h3></label>
<br>
<br>
<span>Destination (departement) <input type="text" id="destination">
<br>
<br>
<span>Nombre de palettes <input type="text" id="nombre_de_palettes">
<br>
<br>
<span>Poids par palette <input type="text" id="poids_par_palette">
<br>
<br>
<span>Optimiser prix <input type="checkbox" id="Optimisation_prix">
<br>
<br>
<span>Optimiser délai de livraion <input type="checkbox" id="Optimisation_delai">
<br>
<input id="ajax-call" type="submit" value="Simuler">
</form>
<p id="ajax"></p>
这是我在网页中的 js 脚本
<script>
document.querySelector("#ajax-call").addEventListener("click", event => {
event.preventDefault();
let formData = new FormData();
formData.append('destination', document.querySelector("#destination").value);
formData.append('nombre_de_palettes', document.querySelector("#nombre_de_palettes").value);
formData.append('poids_par_palette', document.querySelector("#poids_par_palette").value);
formData.append('Optimisation_prix', document.querySelector("#Optimisation_prix").value);
formData.append('Optimisation_delai', document.querySelector("#Optimisation_delai").value);
let csrfTokenValue = document.querySelector('[name=csrfmiddlewaretoken]').value;
const request = new Request('{% url "compute" %}', {
method: 'POST',
body: formData,
headers: {'X-CSRFToken': csrfTokenValue}
});
fetch(request)
.then(response => response.json())
.then(result => {
const resultElement = document.querySelector("#ajax");
resultElement.innerHTML = result["operation_result"];
})
})
</script>
不知道这有什么问题,我已经成功地将相同的结构用于其他项目并且它有效。我已经为此苦苦挣扎了好几个小时,我看不清楚。希望有人能看到我在哪里搞砸了!
解决方案
您在 formData 中拼错了目的地
formData.append('destination', document.querySelector("#destination").value);
推荐阅读
- machine-learning - SVM 加载的训练模型的准确率明显降低;我们也需要保存 TokenCountVectorizer 吗?
- symfony - 重置 Symfony 会话生命周期/用户活动超时
- ios - iOS:我收到一条错误消息“请求的属性表达式的地址”
- pandas - Kaggle 文件汇总错误(Santander Value Prediction Challenge)
- c# - 蜡工具包。如何使用 $(env.windir)?
- asp.net-core - Unobtrusive Ajax lib 不发送 XmlHttpRequest 标头
- spring-cloud-config - 带有裸本地存储库的 Spring-Cloud-Config
- visual-studio - Resource.Designer.cs 生成器在调试时缺少资源
- reactjs - 如何动态更改属性要求
- sql-server-2008 - 从其他数据集向 SQL Server Reporting Services 中的表添加值