Не удается получить данные от AngularJS - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь отправить параметры в 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 голосов
/ 08 января 2019

Я не могу понять, что вы делаете с этим кодом.

Для доступа к параметрам в POST-запросе в кодированной форме вы используете request.POST, что является кверидиктом. Итак:

print(request.POST)

Редактировать

Вы делаете здесь всякие странные вещи. Сервис AngularJS $http автоматически преобразует объект в параметре данных в JSON, см. Документы . Вы включили дополнительный заголовок, чтобы сказать, что это данные в кодированной форме; но это не будет Вы должны полностью удалить этот cn объект.

На стороне Django, поскольку он получает данные, не закодированные в форме JSON, вам нужно взять тело запроса и десериализовать его:

data = json.loads(request.body)
ap = data.get('ap')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...