2017-11-16 7 views
0

CBV内からエンドポイントに投稿し、レスポンスを取得したい(作成したリソースのIDにアクセスする)。私はHow to programmatically call a Django Rest Framework view within another view?を見てきましたが、リクエストオブジェクトでフィールド値を送信する方法を見つけることができません。 request.dataは不変であり、通過kwargsからを渡すことは何もしていないようです:Django rest Framework JSONを別のクラスベースのビュー内のapiエンドポイントに送信する

from app.views import OtherViewSet 

class NewViews(APIView): 
    def post(self, request, *args, **kwargs): 
     # kwargs value here is {'field1':1, 'field2':2...} 
     view_func = OtherViewSet({'post':'create'}) 
     response = view_func(self.request, *args, **kwargs).data 

kwargsからは(グループという名前のいくつかのURLを介して設定)フィールド値が含まれていますが、応答はいつものようになります。

{'field1': ['This field is required'], 'field2':['This field is required... 

私は間違っていますか?ありがとうすべて:)

編集: 作成したリソースのIDを取得したら、特定の(カスタム)形式でレンダリングされたリソースを取得したい(上記の応答オブジェクトを返すしたくない)。

+0

'OtherViewSet'からシリアライザを再利用する可能性のある特定のシリアライザを使用しないのはなぜ? –

+0

@GabrielMujここに例を挙げることができますか?どのように見えるかわかりません - このビュー内のOtherViewSetの作成エンドポイントにリクエストをした後にデータにアクセスする必要があります。 – Liz

+0

'OtherViewSet'のシリアライザと' NewView'で必要なデータを提供できますか? –

答えて

0

views.py

from app.views import OtherViewSet 

class NewViews(APIView): 
    def post(self, request, *args, **kwargs): 
     view = OtherViewSet.as_view({'post':'create'}) 
     response = view(request, *args, **kwargs) 
     return response 
+0

私はdjango.http.request.RawPostDataExceptionを取得します:リクエストのデータストリームから読み込んだ後、bodyにアクセスすることはできません。しかし、私は応答からデータにアクセスし、それを返す必要はありません。 – Liz

関連する問題