在我无法使用这些答案为我的问题找到可行的解决方案之前,我知道之前已经提出了与此类似的问题。
我有一个页面,其中包含表单A和许多复选框。表单和相关复选框是通过Django模板创建的。我通过javascript从Django Template创建的表单A的输入值创建了一个新表单B.由于csrf_token错误,Django不接受我的新表格B.有人可以告诉我如何从django呈现的表单A中提取csrf标记,并将其用作动态创建的javascript表单的csrf标记吗?
答案 0 :(得分:3)
您可以在发布的数据中包含csrf令牌。
您可以从html表单中的隐藏字段中提取它:
var token = $('input[name="csrfmiddlewaretoken"]').val();
使用jquery选择器:
function getCookie(name) {
var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
return v ? v[2] : null;
}
var token = getCookie('csrftoken');
或者,如果你喜欢普通的js,你可以使用这个函数从文档cookie中提取它:
"02:00.0 Ethernet controller: Intel Corporation 82575EB Gigabit Network Connection (rev 02)"
"02:00.1 Ethernet controller: Intel Corporation 82575EB Gigabit Network Connection (rev 02)
答案 1 :(得分:1)
我认为更简单的方法是使用cookie。 csrf令牌只是一个cookie,您可以检索其值。请查看Ajax
上的部分,看看它是否可以提供任何帮助https://docs.djangoproject.com/en/1.9/ref/csrf/#ajax。
var csrftoken = Cookies.get('csrftoken');
使用javascript cookie库执行此操作应该可以帮助您检索csrf令牌。