Django - Javascript - Csrf令牌

时间:2016-04-12 12:49:45

标签: javascript django python-3.x post 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不会运行。

2 个答案:

答案 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);