Django csrf令牌不与ajax数据一起发送

时间:2012-10-21 03:05:14

标签: jquery ajax django json

我正试图通过jQuery AJAX将一些数据发布到Django(1.4)视图中。我以前做过这个,但这次有些不对劲。我按照Django Docs中的说明完成了我的AJAX设置以包含CSFR令牌。

jQuery的行:

$.ajax({
        url:'/login/',
        type:'POST',
        contentType:'application/json; charset=UTF-8;',
        dataType:'json',
        data: JSON.stringify({
            username:$('#this').val(),
            password:$('#that').val()
        })

但是,当我发送数据时,当我在视图中包含该行时:

 print request.raw_post_data

它会打印两次。第一次将发布的数据作为QueryDict {u'this':u'these',u'that':u'those'},第二次使用csrfmiddleware令牌。

为什么打印两次?它们不应该在同一个QueryDic中吗?

1 个答案:

答案 0 :(得分:0)

因为我没有包括

e.preventDefault()

表格发了两次。一个QueryDict有效但视图函数没有处理b / c默认提交数据只有csrftoken。

使用

simplejson.loads(request.raw_post_data)

获取我的数据。