2017-09-08 16 views
0

現在、私はrequestsライブラリを使用して内部API呼び出しを行っています。しかし、それはステージングに失敗します。Django内部API呼び出しを行う方法?

class LoginSubscriber(generics.GenericAPIView): 
    queryset = User.objects.all() 
    serializer_class = LoginSerializer 
    client_id = settings.client_id 
    client_secret = settings.client_secret 

    def user_logged_in(self, username, password, host): 
     data = [('grant_type', 'password'), 
      ('username', username), 
      ('password', password), 
      ('scope', 'read')] 
     return requests.post(self.protocol + host + '/oauth/token/', data=data, auth=(self.client_id, self.client_secret)) # 


    def post(self, request): 
     serializer = self.get_serializer(data=request.data) 
     if serializer.is_valid(): 
      data = serializer.data 
      host = request.META['HTTP_HOST'] 
      logged_in_token = self.user_logged_in(request, data['username'],data['password'], host) 
      if logged_in_token: 
       return Response({'token': logged_in_token.text}, status=status.HTTP_200_OK) 
      return Response({'status': 'Failed Authentication'}, status=status.HTTP_401_UNAUTHORIZED) 
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

リクエストライブラリなしでこれを達成する方法はありますか?

+0

ビューには、そのURLのどのようなことを行うことができますか?嘲笑されたリクエストでそれを呼び出すか、それと同様のヘルパー機能を呼び出しますか? –

+0

任意のサンプルコード.. –

+0

私はハンドラ/関数が 'post'edデータを受け取り、何かをして何らかの応答を返すと仮定します。その機能に認証データを渡すのはなぜですか? – marmeladze

答えて

0

シングルスレッドの開発サーバーを使用した場合。元のリクエストで処理しているため、別のURLの内部リクエストを処理することはできません。

他のポート番号で電話する必要があります。

+0

サーバーがポート番号で稼働しているときに、別のポート番号を呼び出すのはなぜですか –

関連する問題