无法从AngularJS接收数据

时间:2019-01-08 09:16:40

标签: angularjs django

我正在尝试将参数发送到Django View,但显示空白。以下是我的Angularjs代码:

      $scope.APbaseHttp=function(x){
         $scope.unkm='/budareaemp/';
         alert("in APBASE");
         var dt = $.param({
          ap:x
         });
           var cn = {
           headers: {
             'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
          }
      };      
      alert("dt Value :"+x);
      $http.post($scope.unmk,dt,cn).then(function(response){
          $scope.appdata=response.data;
          $scope.nm="Success";
      });
   }  

当我发出警报时,值x正在显示HTML的预期值。

这是我的Django代码:

@csrf_exempt
def getEmpAppwise(request):
    print("In GET EMP AppWise.....................................................................")
    x=QueryDict(request.body)
    y=len(request.body)
    h=HttpRequest.body
    print('-rrrrrrrr :',x,y,h)
    #print('oooooooooo',json.loads(x))
    print("Get EMp Wisee ",request.POST)
    print("Get EMp Wiseeeeee ",request.POST.get('ap'))
    ap=request.POST.get('ap') 

    print("::::::::::I am in Get APP Name :::::::::::::::",ap)

在StackOverflow的帮助下,我尝试了所有可能的方式,但没有成功。

显示如下

<QueryDict:{}> 0
None

当我查看传递的参数时,在Firefox中,它显示为“未传递参数”。

1 个答案:

答案 0 :(得分:0)

我不明白您正在使用该代码做什么。

要访问表单编码的POST请求中的参数,请使用request.POST,这是一个querydict。所以:

print(request.POST)

修改

您在这里做各种奇怪的事情。 AngularJS的$http服务将自动将data参数中的对象转换为JSON,请参见the docs。您已经包括一个额外的标题,以表明这是表单编码的数据;但事实并非如此。您应该完全删除该cn对象。

在Django方面,由于它正在接收JSON而不是形式编码的数据,因此您需要获取请求主体并将其反序列化:

data = json.loads(request.body)
ap = data.get('ap')