我创建了一个角色资源
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(数据),数据包含数据,浏览器显示帖子请求已提交数据。
但是当我在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)
我在这段代码中没有问题?
答案 0 :(得分:0)
AngularJS会将序列化的数据发布到JSON中,但django希望接收表单数据。如果您想接收该数据,您可以更改AngularJS的默认行为,不使用POST获取数据,而是使用request.body,或者您可以使用某些第三方软件包(如Django REST framework)为您完成工作。< / p>
答案 1 :(得分:0)
当调用ajax时,你在请求体中收到编码的json字符串,所以你需要使用python的json模块解码它来获取python dict。 由于django是一个网络framweork,它期望从表单中获取数据。
我真的建议使用这个框架http://www.django-rest-framework.org/
无论如何,在您的视图中获取发布数据将是这样的:
(Pdb) request.POST
<QueryDict: {}>
(Pdb) import json
(Pdb) json.loads(request.body)
{u'operator': u'pepe', u'password': u'1234', u'transport': u'LUUAAA'}
import json
class ReplySMSView(View):
def post(self, request):
data = json.loads(request.body)
print 'post data', request.POST # here data is not printed
data = dict(data.items())
return self.process(request, data)