【问题标题】:Django and JEditable: CSRF errorDjango 和 JEditable:CSRF 错误
【发布时间】:2012-10-12 17:43:17
【问题描述】:

我开始在 Django 中使用Jeditable 插件并很快遇到了一个 CSRF 错误:“CSRF 验证失败。请求中止。”、“CSRF 令牌丢失或不正确”

在撰写本文时,Jeditable 插件似乎最后一次更新是在 2008 年——在此 Django 开始要求 CSRF tokens 用于 POST 请求之后的某个时间。

如何将 Django CSRF 数据添加到 Jeditable 中?

【问题讨论】:

    标签: django csrf jeditable


    【解决方案1】:

    通过 AJAX 请求提供 CSRF 令牌的首选方法是将 X-CSRFToken 标头设置为 CSRF 令牌的值。您需要修改构造的请求对象以设置标头值。

    还提供了一个辅助函数来从 cookie 中获取 CSRF 令牌,而不是依赖于在模板中提供它,这大大简化了事情,即您不必内联发送 JS 代码或将令牌设置为模板本身的 JS 中的一个变量。

    【讨论】:

      【解决方案2】:

      这个问题的答案来自similar jeditable post on CSRF。 CSRF 令牌可以添加到“submitdata”变量中。

      为 Django 帖子扩展 1st jeditable example 看起来像这样:

      $(document).ready(function() {
         $('.edit').editable('http://www.example.com/save.php', { 
              submitdata : { csrfmiddlewaretoken : "{{ csrf_token }}"}
          });
      });
      

      注意,为了显示“csrf_token”值而不是整个表单字段,“csrf_token”被包裹在 {{..}} 而不是 {% .. %} 中。

      【讨论】:

        猜你喜欢
        • 2011-10-02
        • 2016-01-23
        • 2014-05-20
        • 2012-12-18
        • 1970-01-01
        • 2010-12-03
        • 2012-04-24
        • 2021-12-28
        • 2015-06-23
        相关资源
        最近更新 更多