2016-06-26 2 views
1

Я делаю запрос POST в AngularJS следующим образом:AngularJS request.POST вернуться QueryDict: {}

'use strict'; 
angular.module('app').controller('RegisterController', function($scope, $http) { 
     $scope.login = [] 
     $scope.registrar = function() { 

     $http({ 
      method : 'POST', 
      url  : '/register/', 
      headers : {'Content-Type': 'application/json'}, 
      data : {'username' : $scope.login.username, 
         'password' : $scope.login.password, 
         'email' : $scope.login.email, 
         'permission' : $scope.login.permission } 
      })   
      .success(function(data) { 
      $scope.gists = data; 
      }) 
      .error(function(data, status) { 
      console.error('Repos error', status, data); 
      }) 
      .finally(function() { 
      console.log("finally finished repos"); 
      }); 

     }; 
}) 

И в Django Я звоню метод request.POST [ "имя пользователя"], чтобы получить информацию ,

Но информация не возвращается, я взял команду print в запросе.POST и request.GET, чтобы увидеть и оба вернуть QueryDict: {}.

Мне нужно сделать какую-то другую конфигурацию для работ REST?

+0

Вы уверены, что ожидаете приложения/json и не формируете закодированные данные? – charlietfl

+0

Предложение ... не нужно создавать целые объекты для 'data', когда объект области видимости имеет те же свойства. Измените на 'data: $ scope.login'. Сохраняет вручную создание нового объекта. Не разрешит проблему у вас есть ... но поможет в будущем – charlietfl

ответ

2

Доступно через request.body, так что вам нужно сделать json.loads(request.body), чтобы получить опубликованные данные.

Также рассмотрите возможность использования DRF. Он будет автоматически обрабатывать полезную нагрузку json.

+0

Проблема решена, спасибо – user3434888

+0

Если вы получаете TypeError (должна быть строка не байтов), используйте: json.loads (request.body.decode ('utf-8')) – ChrisE

Смежные вопросы