将数据从 angularjs 发送到 django
Posted
技术标签:
【中文标题】将数据从 angularjs 发送到 django【英文标题】:sending data from angularjs to django 【发布时间】:2012-05-18 05:01:35 【问题描述】:我正在使用 Angularjs 及其 $http 模块向 Django 服务器发送 POST AJAX 请求。这是一个例子:
$http(
method: 'POST',
url: '/url/',
data: 'test data'
).
success(function(data, status, headers, config)
doSomeStuffWhenSuccess();
);
问题是我在 Django 中得到了什么。无论我发送什么,数据始终是QueryDict
对象的键,其值始终是一个空列表。
<QueryDict: u'test data': [u'']>
我不知道为什么。我错过了什么?
我使用几乎默认创建的 Django 应用程序和默认中间件。我只创建了一个视图并在 url config 中设置了一个 url。 Django 的版本是 1.3。我将 Angular 的 $http 模块配置为始终发送包含 csrf 令牌的标头以满足 Django。
【问题讨论】:
【参考方案1】:我用 jQuery 参数函数解决了这个问题。我认为这是更优雅的解决方案。
$http(
method: 'POST',
url: '/url/',
data: $.param(test: data)
)
现在它可以像我想要的那样工作了。
【讨论】:
【参考方案2】:我相信 django 认为您正在发送一个 urlencoded 表单,例如。键=值&键2=值2...
如果你愿意尝试:
$http(
method: 'POST',
url: '/url/',
data: 'test=data'
)
你应该得到
<QueryDict: u'test': [u'data']>
您始终可以通过以下方式获取数据(原始正文内容):
request.body
希望这是您正在寻找的。p>
【讨论】:
感谢这项工作!但是你能解释一下为什么 django 认为它的 urlencoded 数据吗?如果可以定制它? request.GET 和 request.POST 包含预处理的键/值数据 - 如果您想要原始数据(例如 JSON 或纯文本),请尝试:request.raw_post_data以上是关于将数据从 angularjs 发送到 django的主要内容,如果未能解决你的问题,请参考以下文章
如何从 WebView Cordova AngularJS 控制器访问/发送数据到 MainActivity?
angularJS 从 base64 制作二进制数据图像并作为图像文件发送到服务器
使用 django 和 AngularJS 使用 JWT 登录所需的装饰器
将数据从 Python Web 套接字客户端发送到 Django 通道
Django + Angular:如何将 angularjs $http 数据或参数发送到 django 并在 django 中解释?