dav*_*ekr 5 django ajax http angularjs
我正在使用Angularjs及其$ http模块向Django服务器发送POST AJAX请求.这是一个例子:
$http({
method: 'POST',
url: '/url/',
data: 'test data'
}).
success(function(data, status, headers, config) {
doSomeStuffWhenSuccess();
});
Run Code Online (Sandbox Code Playgroud)
问题是我在Django中得到的.无论我发送什么数据始终是QueryDict对象的关键,因此值始终是空列表.
<QueryDict: {u'test data': [u'']}>
Run Code Online (Sandbox Code Playgroud)
我不知道为什么.我错过了什么?
我使用几乎默认创建的Django应用程序只使用默认中间件.我只创建了一个视图并在url config中设置了一个url.Django的版本是1.3.我配置angular的$ http模块总是发送一个包含csrf令牌的头来满足Django.
我用jQuery param函数解决了这个问题.我认为这是更优雅的解决方案.
$http({
method: 'POST',
url: '/url/',
data: $.param({test: data})
})
Run Code Online (Sandbox Code Playgroud)
现在它像我想要的那样工作.
我相信django认为你正在发送一个urlencoded形式,例如.键=值键2 =值...
如果你尝试:
$http({
method: 'POST',
url: '/url/',
data: 'test=data'
})
Run Code Online (Sandbox Code Playgroud)
你应该得到
<QueryDict: {u'test': [u'data']}>
Run Code Online (Sandbox Code Playgroud)
您始终可以按如下方式获取数据(原始内容):
request.body
Run Code Online (Sandbox Code Playgroud)
希望这是你正在寻找的.