【发布时间】:2021-02-23 01:35:57
【问题描述】:
在我的 html 中,我有这段代码,用户从数据库中更新数量,为什么我会遇到这种错误 Forbidden (CSRF token missing or incorrect.): /updatecart_index/ ?即使我的表格中有这个{% csrf_token %}
<form method="POST" id="form" >{% csrf_token %}
<input type="hidden" value="{{bought.id}}" name="itemID">
<input type="submit" value="-" id="down" formaction="/updatecart_index/" onclick="setQuantity('down');" >
<input type="text" name="quantity" id="quantity" value="{{bought.quantity}}" onkeyup="multiplyBy()" style="width: 13%; text-align:left;" readonly>
<input type="submit" value="+" id="up" formaction="/updatecart_index/" onclick="setQuantity('up');" >
</form>
<script type="text/javascript">
$(document).ready(function(){
$("form").submit(function(){
event.preventDefault();
var form_id = $('#form')
$.ajax({
url: "{% url 'updatecart_index' %}",
type: 'POST',
data: form_id.serialize(),
header: {'X-CSRFToken': '{% csrf_token %}'},
dataType: "json",
success: function (response){
var success = response['success']
if(success){
alert("form submittend");
}else{
alert("got error");
}
},
failure: function (error){
alert("Error occured while calling Django view")
}
})
});
});
</script>
在views.py中
def updatecart_index(request):
item = request.POST.get("itemID")
print("dasdasd")
quantity = request.POST.get("quantity")
product = CustomerPurchaseOrderDetail.objects.get(id=item)
print("aa", CustomerPurchaseOrderDetail.objects.get(id=item))
product.quantity = quantity
product.save()
data = {}
data['success'] = True
return HttpResponse(json.dumps(data), content_type="application/json")
更新
当我在views.py 中尝试@csrf_exempt 时,request.POST.get("item") 没有从html 中获取数据
【问题讨论】:
-
我的表单中已经有 {% csrf_token %}
-
@ViaTech 你能发表你的答案吗?