前言
在DJango项目开发中遇到了一个问题,已经写好的接口(A接口)需要在另一个接口(B接口)中调用,但是写好的这个接口必须要传递request参数,且接口返回的是JsonResponse对象。
A接口部分代码如下:
def get_monthly_usage(request):
"""计算月使用率"""
if request.method == 'GET':
return Http404
module_name = request.POST.get('module_name', '')
date = request.POST.get('date', '')
.....
return JsonResponse(row_datas, safe=False)
解决办法
使用request.POST.copy()
复制 request body 数据 到 data 中,对data进行修改
B接口代码如下:
def get_all_modules_usage(request):
'''获取所有模组的使用率'''
all_modules_name = list(Licenses.objects.values_list('moduleName'))
all_data = list()
for m in all_modules_name:
# 修改request中的POST数据,然后传递给 get_monthly_rate
data = request.POST.copy()
data['module_name'] = m[0]
data['date'] = datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m')
request.POST = data
res = get_monthly_usage(request)
# 由于get_monthly_usage返回的是JsonResponse对象,必须加上以下代码
data_formatt = eval(res.content.decode())
all_data.append(data_formatt[-7:] if len(data_formatt) > 7 else data_formatt)
return JsonResponse(all_data, safe=False)
参考链接:https://blog.csdn.net/fengxiaolu311/article/details/107410683