UpdateAPIView csrf令牌丢失,但它在那里

时间:2015-05-29 11:02:18

标签: django django-rest-framework

我想使用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事情。

0 个答案:

没有答案