作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在模板中制作了一个带有{% 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')
所以我收到以下错误:
附注我知道有很多关于这方面的教程,但其中许多已经过时,并且存在损坏的链接。
最佳答案
您需要在 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/
我是一名优秀的程序员,十分优秀!