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);
这是我尝试将 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);