我想在Django中不使用表单元素的情况下发送一个ajax请求(通过Jquery,尽管我认为这种情况无关紧要)。根据documentation,我应该可以通过使用ensure_csrf_cookie
修饰器来实现,但是,我得到了Error was: cannot import name ensure_csrf_cookie
。在没有表单元素的情况下在Django中使用ajax请求
我正在使用以下导入from django.views.decorators.csrf import ensure_csrf_cookie
。
我没有找到关于ensure_csrf_cookie
的大量文档,所以任何帮助将不胜感激。
顺便说一句,使用@csrf_exempt
按预期工作。
在此先感谢。
我不知道'ensure_csrf_cookie'是一个1.4 alpha版本。这就是为什么我得到导入错误(我正在运行1.3)。至于你的建议,我的JavaScript没有嵌入到我的模板中,所以{{csrf_token}}不会替代实际的标记。你有解决这个问题的方法吗? –
是的,在这里实现jQuery函数:https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax其中一个cookie放在客户端浏览器上并带有csrf_token。它应该在大多数情况下没有这个新的1.4功能? –
太好了。我对使用这种方法有点犹豫,因为它看起来很丑,但效果很好。顺便说一下,我是否应该避免使用'csrf_exempt',或者在使用ensure_csrf_cookie或刚才建议的选项时存在缺陷(安全方面)? –