gpt4 book ai didi

jquery - 如何在 Django 中正确执行 AJAX 请求

转载 作者:行者123 更新时间:2023-12-01 07:03:48 25 4
gpt4 key购买 nike

我在模板中制作了一个带有{% csrf_token %}标签的表单,表单输出如下:

 <form id="appl_detail13" action="/13/devices/" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="gTOpBTi6rljV5dKsGE0kuzD1IkghAlzW7GdiBZw6pMMaMUxJSlVev5YqPef6jhjb">
<input name="appl_checkbox" id="5" type="checkbox" class="form-check-input applcheck" value="13">
</form>

在复选框上单击我执行 ajax 请求,但我不发送 csrf token :

$(".applcheck").click(e=>{
$.post('/13/devices/',{data:'postedvalue'}, data=> {
console.log(data)
})
})

网址映射器:

urlpatterns = [
# ex: /13/devices/
path('<int:application_id>/devices/', views.ApplicationDetail, name='application-detail'),
]

我的 View 接受请求并应发送 JSON。

def ApplicationDetail(request, application_id):
if request.method == 'POST':
device = Device.objects.all().filter(application_id=application_id)
data = serializers.serialize('json', device)

return HttpResponse(data, content_type='application/json')
else:
return HttpResponse('no posted')

所以我收到以下错误:

enter image description here

附注我知道有很多关于这方面的教程,但其中许多已经过时,并且存在损坏的链接。

最佳答案

您需要在 ajax 调用的 header 中添加 CSRF 试试这个 -

(function() {
$.ajaxSetup({
headers: { "X-CSRFToken": getCookie("csrftoken") }
});

function getCookie(c_name)
{
if (document.cookie.length > 0)
{
c_start = document.cookie.indexOf(c_name + "=");
if (c_start != -1)
{
c_start = c_start + c_name.length + 1;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) c_end = document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
}());

关于jquery - 如何在 Django 中正确执行 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59729694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com