如何将csrf_token添加到动态生成的表单中?

时间:2011-04-06 10:53:20

标签: javascript jquery django

我有一个动态生成的表单,但由于Django在每个POST表单中都需要csrf_token,所以我无法使用它。

我的表单是通过以下方式生成的:

$("#results").append(
  '<form class="form-book-add" id="{0}" method="post" action="/books/add/">'
  // Django requires a CSRF token here. How do I add it via Javascript?
  + '<input type="hidden" id="book-asin" value="'+asin+'"/>'
  + '<input type="hidden" id="book-title" value="'+details['title']+'"/>'
  + '<input type="hidden" id="book-author" value="'+details['author']+'"/>'
  + '<input type="hidden" id="book-cover" value="'+details['cover']+'"/>'
  + '<input type="hidden" id="book-url" value="'+details['url']+'"/>'
  + '<input type="hidden" id="book-isbn" value="'+details['isbn']+'"/>'
  + '<input type="submit" id="btn-book-add" value="Add"/>'
  + '</form></div>'.format(i)
);

1 个答案:

答案 0 :(得分:3)

你有2个选项,首先排除视图的csrf验证 - 最简单,不安全。

第二步,将input的{​​{1}}设置为Cookie csrfmiddlewaretoken中的值。

django docs有一个很好的类似例子(从那个例子中你只需要提取cookie值的部分)。