Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 角度资源通过django视图发布数据但不接收_Python_Angularjs_Django_Angular Resource - Fatal编程技术网

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'}