Django - Javascript - Csrf 令牌

Django - Javascript - Csrf Token

这是我尝试将 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 没有 运行.

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

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

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

您的代码中有 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);