Django Rest Framework从View返回库请求的响应



我有以下两个视图,对于特定的参数,我需要在接收某些参数时向另一个视图发送PATCH请求。但是我得到以下错误,如何纠正?

Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, 
but received a `<class 'requests.models.Response'>`

视图如下:

class Emp_Status_Trans_ListView(APIView):
permission_classes = [DjangoCustomModelPermissions]
queryset = Emp_Status_Trans.objects.none()
def get(self, request, format=None):
emp_mast_id=request.query_params.get('employee',None)
linked_model_data = [("hr","Emp_Status_Mast","Emp_Status_Mast_Serializer",("emp_status_mast_id","emp_status_short"))]
final_resp = {}
db_data = Emp_Status_Trans.objects.all().prefetch_related("emp_mast","emp_status_mast")
if emp_mast_id:
db_data = db_data.filter(emp_mast=emp_mast_id)
serializer = Emp_Status_Trans_Serializer(db_data, many=True)
final_resp['emp_status_trans'] = serializer.data
get_linked_data(final_resp, linked_model_data)
return Response(final_resp)
def post(self, request, format=None):
patch_emp_mast=request.query_params.get('patch_emp_mast',None)
serializer = Emp_Status_Trans_Serializer(data=request.data)
if serializer.is_valid():
serializer.save()
if patch_emp_mast:
return self.patch_emp_mast(serializer.data,request.META.get("HTTP_HOST"),request.META.get("HTTP_AUTHORIZATION"))
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def patch_emp_mast(self,data,domain,access_token):
url = "http://"+domain+"/hr/emp_mast/"+str(data['emp_mast']['id'])+"/"
headers = {'Content-Type': 'application/json', 'Authorization':access_token}
data = {
'emp_status_mast': data['emp_status_mast'],
}
return requests.patch(url,headers=headers, data=json.dumps(data))

当接收到查询param时,会调用patch_emp_mast,但是由于前面提到的错误而失败。如何纠正这种情况?

您可以像;

def patch_emp_mast(self,data,domain,access_token):
url = "http://"+domain+"/hr/emp_mast/"+str(data['emp_mast']['id'])+"/"
headers = {'Content-Type': 'application/json', 'Authorization':access_token}
data = {
'emp_status_mast': data['emp_status_mast'],
}
try:
response= requests.patch(url,headers=headers, data=json.dumps(data))
return Response("status":True,"response":response.json())
expect:
return Response("status":False,"response":{})

向致以最良好的问候

最新更新