我想发送一个ajax请求(通过Jquery,尽管我认为在这种情况下不相关),而不在Django中使用form元素。根据文档,我应该可以通过使用ensure_csrf_cookie装饰器来做到这一点,但是我得到了Error was: cannot import name ensure_csrf_cookie。
ensure_csrf_cookie
Error was: cannot import name ensure_csrf_cookie
我正在使用以下导入from django.views.decorators.csrf import ensure_csrf_cookie。
from django.views.decorators.csrf import ensure_csrf_cookie
我没有找到有关的大量文档ensure_csrf_cookie,因此我们将不胜感激。
顺便说一句,使用@csrf_exempt按预期方式工作。
@csrf_exempt
提前致谢。
ensure_csrf_cookie 如果您在导入时遇到困难,它可能仅是1.4 alpha功能-我可以在树干上使用相同的语句很好地导入它。
这里最简单的解决方案是在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,该csrf cookie在基于自动cookie的csrf保护机制中使用,对于此处描述的jquery ajax调用是必需的:https ://docs.djangoproject.com/en/dev/ref/contrib/ csrf /#ajax