当前位置: 首页 > 面试题库 >

在不带表单元素的Django中使用Ajax请求

牟正真
2023-03-14
问题内容

我想发送一个ajax请求(通过Jquery,尽管我认为在这种情况下不相关),而不在Django中使用form元素。根据文档,我应该可以通过使用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功能-我可以在树干上使用相同的语句很好地导入它。

这里最简单的解决方案是在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




 类似资料:
  • 本文向大家介绍Django中的ajax请求,包括了Django中的ajax请求的使用技巧和注意事项,需要的朋友参考一下 需求:实现ajax请求,在界面上任意地方点击,可以成功传参。 创建项目如下所示: settings.py文件的设置,这次我们除了要注册app和设置templates文件夹的路径,还要多设置一下static的路径,代码如下: 首先,先对界面做处理,设置高为100%,然后引入我们所需

  • 问题内容: 我是Liferay门户网站的新手。我已经在liferay中开发了一个portlet进行演示。在此示例中,我使用了portlet间的通信。我正在做的是:-我有一个搜索portlet,其中有一个要搜索的文本字段。当我单击搜索按钮时,它将从数据库中获取数据,并使用另一个portlet中包含的搜索显示该数据。我为此项目使用了ProcessEvent和ActionEvent批注。 现在我想要的是

  • 这是我的问题。 我有一个像这样的简单表格(示例): null null 并且我正在尝试列的名称,同时单击元素。 我想这可能是一个简单的解决办法但我找不到。 提前致谢

  • 问题内容: Controller @Spring : 问题答案: 我的方法存在问题: 我为MultiPartResolver创建了一个bean。解决问题后的理解是,仅当你需要特定类型的文件或非常特定于应用程序的文件时,才定义此bean。尽管我希望对此有更多了解,并希望能从stackoverflow的技术人员那里听到。 当前问题的解决方案: 我会给出我的源代码, HTML: AngularJS: s

  • 问题内容: 我想使用Ajax自动将新表单添加到Django表单集中,以便当用户单击“添加”按钮时,它将运行JavaScript,该JavaScript将新表单(属于表单集的一部分)添加到页面中。 问题答案: 这就是我使用jQuery的方式: 我的模板: 在一个javascript文件中: 它能做什么: 接受作为第一个参数,的作为第二个参数。什么是应该做的是把它传递它应该复制。在这种情况下,我将其传

  • 问题内容: 上下文: chrome浏览器扩展程序使用JQuery请求来自远程django应用程序的响应。Django识别出该请求是通过AJAX发出的,并以“HelloAJAX!”响应。我以这个伟大的榜样为基础进行锻炼。由于此请求是通过chrome扩展程序发出的,因此该请求是跨站点发出的,因此我在Django视图上使用了装饰器。 问题: 我的Django视图无法将请求识别为AJAX请求,并且没有响应