2016-11-23 54 views
0

这是我的看法,无法获取POST数据Django的REST框架

@api_view(['GET','POST']) 
def login(request): 
    if request.method == 'GET': 
     posts = Posts.objects.all() 
     serializer = PostSerializer(posts, many=True) 
     return Response(serializer.data) 
    elif request.method == 'POST': 
     usr = request.data.get('username') 
     print(request.data) 
     pwd = request.data.get('password') 
     try: 
      user = Users.objects.get(username=usr) 
      if user.password == pwd: 
       return Response(UserSerializer(user).data) 
      else: 
       return Response({}) 
     except Users.DoesNotExist: 
      return Response({}) 

这是我在angularjs控制器通话

$http.post("api/v1/login/",{"username":$scope.username,"password":$scope.password}) 
      .then(
       function(response){ 
       console.log('r',response.data) 
       }, 
       function(response){ 
       console.log('e',response) 
       } 
      ); 

我在我的view.I得到一个空对象还角度配置添加

$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 
     $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
     $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 

在一些blog.the request.data建议仍然empty.Where我做错了认罪我指导我正确。提前感谢。

,因为有一些无关痛痒的code.The问题应该在于code.Please这两个区块帮助 .The获得Ajax请求我已经更新了这个职位是working.Only在文章中,我能得到的任何数据。

回答

0
from rest_framework.decorators import api_view, parser_classes 
from rest_framework.parsers import FormParser, MultiPartParser 

@api_view(['GET','POST']) 
@parser_classes((FormParser, MultiPartParser)) 
def login(request): 
    ... 
+0

我已经按照您的建议添加了,但仍然在'print(response.data)'.getting 中获得一个空对象 – saiyan

+0

请试用MultiPartParser吗? –

+0

MultiPartParser在客户端给我一个错误,说“不支持的媒体类型” – saiyan

0

安装ngCookies然后加入这行代码:

.run(['$rootScope', '$log', '$http', '$cookies', 
function ($rootScope, $log, $http, $cookies) { 
    $http.defaults.headers.common['X-CSRFToken'] = $cookies['csrftoken']; 
}]); 

清洁您的浏览器,然后再试一次。

+0

谢谢,我已经解决了这个问题。这个问题在我身边。我没有检查实际的数据是否存在。请继续讨论,并再次感谢。 – saiyan