APIView
(FooView
)は、URLから直接アクセスできます。request.FILESプロパティが呼び出された場合、APIViewの中断要求がネストされます
APIView
APIKeyImportView
ファイル名に応じてFooView
を再利用する(これはAPIとの互換性のためにこのように行われます)。 request.FILES
は、ファイル名を見てAPIKeyImportView
からアクセスされるしかし
、request.FILES
はFooView
で空になります。
request.FILES
にアクセスすると、ネストされたビューでは使用できなくなります。
方法はありますか? APIKeyImportView
にrequest.Files
の検証を削除
class FooView(APIView):
permission_classes = (permissions.IsAuthenticated,)
def post(self, request, vendor):
file = request.FILES.get('file')
if not file:
return Response(status=status.HTTP_400_BAD_REQUEST)
return Response()
class APIKeyImportView(APIView):
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (ApiKeyAuthentication,)
def post(self, request):
file = request.FILES.get('file')
if not file:
return Response(status=status.HTTP_400_BAD_REQUEST)
name = file.name
if name.startswith('FOO'):
return FooView.as_view()(request=request)
else:
return Response(status=status.HTTP_400_BAD_REQUEST)
はFooView
で、それがアクセスできるようになりますが、それミスの種類のポイント。
PyCharmのrequest
を検査すると、FooView
でデバッガがそのプロパティを呼び出すので、それを無効にします。
class APIKeyImportView(APIView):
permission_classes = (permissions.IsAuthenticated,)
authentication_classes = (ApiKeyAuthentication,)
def post(self, request):
return FooView.as_view()(request=request)
これらのソリューションが動作していません。
次のバージョンでテストdjango modifying the request object
:
- ジャンゴ1.9.5
- ジャンゴ休止フレームワーク3.3.3
- Python 3.4.2