2016-03-30 14 views
0

私はdjango-serverへの接続を取得しないという問題があります。ブラウザのコンソールでは、私はエラーMSG取得しています:[1]Django Tastypie - Angular login

[!1] [[コンソールエラー]]

を私はtastypieを使用してuserResourceクラスを持っている:

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) 

そして、私のクライアントには、ユーザー名とパスワードを使ってPOSTデータを送信するはずのloginControllerがあります。 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"); 
     }); 
}]); 

答えて

1

あなたはバックエンドにリクエスト処理されます許可ホストのリストを提供する必要があります。 thisのコードスニペットを確認するか、クロスドメイン要求の問題を解決するdjango-cors-headersパッケージを使用することを検討してください。

django-cors-headersを使用すると、リクエストを許可するドメインを1つずつ指定することも、正規表現を使用することもできます(同じAPIにアクセスするサブドメインが多数ある場合に便利です。 。!私は十字架でそれを解決してきた他の多くのオプション

幸運

+0

、それはリクエストURLの末尾にスラッシュだったが、「angular.js:11442 POSTはhttp:// localhostを: 8000/api/v1/user/login/500(内部サーバーエラー) "が表示されても、バックエンドまたはクライアントと何か関係がありますか?コンソールで –

+0

をクリックし、失敗した要求を押して、何を参照してくださいエラーはあなたのコードでどこで起こりますか? – iulian

関連する問題