我有一个动态生成的表单,但由于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)
);
答案 0 :(得分:3)
你有2个选项,首先排除视图的csrf验证 - 最简单,不安全。
第二步,将input
的{{1}}设置为Cookie csrfmiddlewaretoken
中的值。
django docs有一个很好的类似例子(从那个例子中你只需要提取cookie值的部分)。