我想在不使用Django中的表单元素的情况下发送一个ajax请求(通过Jquery,虽然我认为这种情况无关紧要).根据文档,我应该可以通过使用ensure_csrf_cookie
装饰器来做到这一点,但是,我得到了Error was: cannot import name ensure_csrf_cookie
.
我正在使用以下导入from django.views.decorators.csrf import ensure_csrf_cookie
.
我没有找到大量的文档ensure_csrf_cookie
,所以任何帮助将不胜感激.
顺便说一句,使用@csrf_exempt
按预期工作.
提前致谢.
ensure_csrf_cookie
如果你在导入它时遇到问题,那么它可能只是一个1.4 alpha的功能 - 我可以在trunk上使用相同的语句将其导入.
这里最简单的解决方案是在ajax调用本身中传递csrf_token VALUE.
你说你使用的是jQuery.
$.ajax({ url: "", type: 'POST', data: { csrfmiddlewaretoken: '{{ csrf_token }}' // just the token value }, success: function(response) { } })
看来这会ensure_csrf_cookie
强制视图设置csrf cookie,这些cookie将在这里描述的jquery ajax调用的基于自动cookie的csrf保护机制中使用:https://docs.djangoproject.com/en/dev/ref/contrib/ CSRF /#阿贾克斯