【问题标题】:Django - Javascript - Csrf TokenDjango - Javascript - Csrf 令牌
【发布时间】:2016-08-03 02:21:45
【问题描述】:

这是我尝试尝试将 csrf 令牌添加到 javascript 表单的代码。

function save() {
    var form = document.createElement("form");
    console.log(form);
    form.setAttribute('method', 'post');
    form.setAttribute('action', '/quiz_score/');
    document.body.appendChild(form);
    var i = document.createElement("input");
    i.setAttribute('name', 'Score');
    i.setAttribute('value', ""+score);
    i.setAttribute('name', 'csrfmiddlewaretoken');
    i.setAttribute('value', {% csrftoken %});
    form.appendChild(i);
    form.submit();
}

你能看出这有什么问题吗?它有一个错误,因此 JS 没有运行。

【问题讨论】:

    标签: javascript django python-3.x post csrf


    【解决方案1】:

    {% csrftoken %} 模板标签输出实际的表单标签(例如<input type='hidden' ... />

    如果您只想要令牌的值,请改用{{ csrf_token }}

    如果您使用 ajax 请求提交表单,您可能会发现将 CSRF 令牌作为标头发送比将标签添加到表单更容易。 See the docs 获取说明。

    【讨论】:

      【解决方案2】:

      您的代码中有 2 个错误。简单的方式看代码。 试试看:

      var i = document.createElement("input");
      i.setAttribute('name', 'Score');
      i.setAttribute('value', ""+score);
      form.appendChild(i);
      var i = document.createElement("input");
      i.setAttribute('name', 'csrfmiddlewaretoken');
      i.setAttribute('value', '{{ csrf_token }}');
      form.appendChild(i);
      

      【讨论】:

        猜你喜欢
        • 2013-08-11
        • 2021-07-14
        • 2012-01-26
        • 2020-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-09
        相关资源
        最近更新 更多