我想使用Django Rest框架
通过UpdateAPIView更新对象$('#update-form').on('submit', function(event){
event.preventDefault();
console.log( $( this ).serialize() );
data = new FormData($('#update-form')[0]);
$.ajax ({
type: "PATCH",
url: $( this ).attr( 'action' ),
data: data,
processData: false,
contentType: false,
success: function(json) {
console.log(json);
console.log('success');
},
error: function(xhr, errmsg, err) {
console.log(xhr.status + ": " + xhr.responseText)
}
});
})
提交后,我收到错误回复:
403:{“detail”:“CSRF失败:CSRF令牌丢失或不正确。”}
我在模板中有{%csrf_token%},并通过查看html的源代码并打印序列化数据的console.log来验证它的位置,其中有csrf标记。
检查模板上下文,csrf令牌就在那里。设置添加了csrf中间件。
表单html很长,但简而言之,csrf就在那里,但是端点(DRF)抱怨缺少csrf
顺便说一下,使用CreateAPIView创建一个对象,使用相同的表单,但只更改了表单ID,但是更新视图不起作用。 CreateAPIView不会抱怨任何csrf事情。