django-rest-framework - 来自 View 的库请求的 Django Rest Framework 返回响应
问题描述
我有以下 2 个视图,并且在特定参数上,我需要在接收某些参数时将 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))
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":{})
此致
推荐阅读
- python - 在文件中排序日期(Python)
- javascript - 为什么我的 Go 服务器无法读取 Swift 帖子?
- swift - Swift - 表格视图 - 为多个数据重复不同部分的顺序
- sql - 在 SQL 中创建函数
- python - 如何在 Python 中检查属性是否为 True
- c# - 写入数据库并同时返回
- python - 有没有办法使用 iterparse lxml 跳过节点/元素?
- python - 尽管使用 ssh-keyscan 生成 known_hosts 文件,pysftp.CnOpts() 'No Host Keys Found' 错误
- react-native - 使用 React Native 更改 SVG 组件
- python - Gstreamer 流结束