我一直在Django上开发一个骨干层,并使用Django创建API,并让骨干模型调用django api来填充模型。我试图为用户使用默认的django模型创建登录。因为我没有通过django渲染页面,而是通过骨干网中的路由器。我无法通过django的模板语言{{csrf_token}}生成csrf令牌,因此我无法发布任何表单。
我认为解决此问题的一种方法是通过在初始化中从api端点获取骨干视图并让端点通过
生成令牌来生成令牌token = csrf._get_new_csrf_key()
然后通过json将其传递给骨干前端,然后遵循django文档
var csrftoken = "<%=obj.csrftoken%>";
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
由于我仍然遭到Forbidden(403)CSRF验证失败,因此无法正常工作。请求中止。
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
最简单的解决方法是阅读csrftoken
cookie并通过X-CSRFToken
标头将其传递给django。 Django文档中的这个section应该给你正确的例子: