Python 角度资源通过django视图发布数据但不接收
我已经创建了一个角度资源Python 角度资源通过django视图发布数据但不接收,python,angularjs,django,angular-resource,Python,Angularjs,Django,Angular Resource,我已经创建了一个角度资源 var services = angular.module('Services', ['ngResource']). // SEND_REPLY_SMS factory('SendSMS', ['$resource', function($resource){ return $resource('/bulk-sms/reply/', null, { send: {method: 'POST'}, } ); }]); 我把它当作
var services = angular.module('Services', ['ngResource']).
// SEND_REPLY_SMS
factory('SendSMS', ['$resource', function($resource){
return $resource('/bulk-sms/reply/', null,
{
send: {method: 'POST'},
}
);
}]);
我把它当作
var data = $scope.data;
SendSMS.send({},data,
function(data){
console.log(data);
},function(error){
console.log(error);
}
);
我已经使用console.log(数据)进行了检查,数据包含数据,浏览器显示post请求已提交数据
但是当我在django视图中收到它时,我无法在django视图中获取数据,我的django视图是
class ReplySMSView(View):
def post(self, request):
data = request.POST.copy()
print 'post data', request.POST # here data is not printed
data = dict(data.items())
return self.process(request, data)
def get(self, request):
data = request.GET.copy()
print 'get data', request.GET # here data is not printed
data = dict(data.items())
return self.process(request, data)
def process(self, request, data):
dct = {}
print data
model = IncomingMessage
account = request.user.account
contacts = data.get('contacts', '')
contacts = contacts if contacts else get_contacts_by_filter(model, data)
# TODO: get_contacts_by_filter is not working here for IncomingMessage
message = data.get('message', '')
identity = data.get('identity', '')
if not contacts:
dct['contacts'] = 'No contacts found.'
if not message:
dct['message'] = 'Message is required.'
if not identity:
dct['identity'] = 'Identity is required.'
if dct:
return HttpResponse(json.dumps(dct), content_type='application/json')
response = send_bulk_sms(contacts, message, identity, account, module='bulk')
return HttpResponse(response)
我不明白这段代码中的问题在哪里?AngularJS将把数据序列化为JSON,但django希望收到表单数据。如果您想要接收该数据,您可以更改AngularJS的默认行为,不使用POST而使用request.body获取数据,或者您可以使用第三方软件包,就像为您做这项工作一样。AngularJS将该数据序列化为JSON,但django希望接收表单数据。若你们想接收那个些数据,你们可以改变AngularJS的默认行为,不使用POST获取数据,而是使用request.body获取数据,或者你们可以使用第三方软件包,就像为你们做这项工作一样。调用ajax时,你们会在请求体中接收到编码的json字符串,所以你们需要使用python的json模块对其进行解码,以获得python dict。 由于django是一个web框架,因此它需要表单中的数据 我真的建议使用这个框架 无论如何,在您看来,获取post数据是这样的:
(Pdb) request.POST
<QueryDict: {}>
(Pdb) import json
(Pdb) json.loads(request.body)
{u'operator': u'pepe', u'password': u'1234', u'transport': u'LUUAAA'}
调用ajax时,您会在请求体中接收到编码的json字符串,因此需要使用python的json模块对其进行解码以获得python dict。 由于django是一个web框架,因此它需要表单中的数据 我真的建议使用这个框架 无论如何,在您看来,获取post数据是这样的:
(Pdb) request.POST
<QueryDict: {}>
(Pdb) import json
(Pdb) json.loads(request.body)
{u'operator': u'pepe', u'password': u'1234', u'transport': u'LUUAAA'}