这是我试图尝试将代码添加到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不会运行。
答案 0 :(得分:2)
{% csrftoken %}
模板tagout输出实际的表单标记(例如<input type='hidden' ... />
。
如果您只想要令牌的价值,请改用{{ csrf_token }}
。
如果您使用ajax请求提交表单,您可能会发现将CSRF令牌作为标题发送更容易,而不是将标记添加到表单中。 See the docs获取指示。
答案 1 :(得分: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);