2016-03-30 22 views
0

Django-sunucuyla bağlantı kuramadığım bir sorunla karşılaşıyorum. tarayıcı konsolunda bir hata msg alıyorum:Django Tastypie - Açısal oturum açma

[! [konsol hatası] [1]] [1]

Ben tastypie kullanarak ve bir userResource sınıf var ediyorum:

class UserResource(ModelResource): 

class Meta: 
    queryset = User.objects.all() 
    fields = ['first_name', 'last_name', 'email'] 
    allowed_methods = ['get', 'post'] 
    resource_name = 'user' 

def override_urls(self): 
    return [ 
     url(r"^(?P<resource_name>%s)/login%s$" % 
      (self._meta.resource_name, trailing_slash()), 
      self.wrap_view('login'), name="api_login"), 
     url(r'^(?P<resource_name>%s)/logout%s$' % 
      (self._meta.resource_name, trailing_slash()), 
      self.wrap_view('logout'), name='api_logout'), 
    ] 

def login(self, request, **kwargs): 
    self.method_check(request, allowed=['post']) 

    data = self.deserialize(request, request.raw_post_data, format=request.META.get('CONTENT_TYPE', 'application/json')) 

    username = data.get('username', '') 
    password = data.get('password', '') 

    user = authenticate(username=username, password=password) 
    if user: 
     if user.is_active: 
      login(request, user) 
      return self.create_response(request, { 
       'success': True 
      }) 
     else: 
      return self.create_response(request, { 
       'success': False, 
       'reason': 'disabled', 
       }, HttpForbidden) 
    else: 
     return self.create_response(request, { 
      'success': False, 
      'reason': 'incorrect', 
      }, HttpUnauthorized) 

def logout(self, request, **kwargs): 
    self.method_check(request, allowed=['get']) 
    if request.user and request.user.is_authenticated(): 
     logout(request) 
     return self.create_response(request, { 'success': True }) 
    else: 
     return self.create_response(request, { 'success': False }, HttpUnauthorized) 

Ve sonra müvekkilimde bir kullanıcı adı ve parola ile bir POST verisi gönderilmesi gereken bir loginController var. loginController:

module.controller('LoginController', ['$scope','$http', 
     function($scope, $http) { 
     $http({ 
       method: 'POST', 
       data: {'username' : 'test', 'password' : 'test123' }, 
       url: 'http://localhost:8000/api/v1/user/login/' 
      }).then(function successCallback(response) { 
       console.log("OK Respone"); 
       console.log(response.data); 
       $scope.orders = response.data.objects; 
       }, function errorCallback(response) { 
       console.log("NO Response"); 
     }); 
}]); 

cevap

1

Sen arka uca istekleri ele alınacaktır izin ana bilgisayarların listesini sağlamanız gerekir. Kod snippet'i için this noktasını kontrol edin veya Etki Alanları arası istekleri çözen sorunu çözen django-cors-headers paketini kullanmayı düşünün.

django-cors-headers'u kullanarak, hangi etki alanlarının tek tek belirtilerek istekte bulunabileceğini ya da normal bir ifade kullanarak yapılandırabilirsiniz (bu, aynı API'ye erişen birçok alt etki alanınızın olması durumunda oldukça yararlıdır). .! diğer birçok seçenek

İyi şanslar Ben Haç ile çözdük

+0

, isteğin URL'nin sonunda eğik çizgi oldu ama "angularjs. 11442 POST http: // localhost: 8000/api/v1/user/login/500 (Dahili Sunucu Hatası) "yine de görünüyor, siz arka arkaya veya istemci ile yapılabilecek bir şey var mı? –

+0

konsolda, başarısız istek üzerine basın ve Yanıt sekmesine geçin. ne olduğunu gör hatadır ve kodunuzda nerede olur. – iulian