使用DRF(Django RESTful Framework)
上一篇说过,前端的同学要求用GET方法传递list列表,因此我有字符串转列表和传递多个同名参数两种方法。但现在需要改成用POST方法传递list列表,这样一来问题就简单了很多,因为POST是可以直接传递列表的。
看示例:
- 视图函数
#查询某年某商品在某市场的每月均价
class Avg_Month_PriceAPIView(APIView):
def post(self,request):
goodname = request.data['goodname']
year = request.data['year']
market_list = request.data['checkedMarkets'] #直接获取列表参数
price_list = []
for market in market_list:
marketinfo0 = Market.objects.filter(actual_type=goodname, year=year, market=market)
serializer0 = MarketModelSerializer(instance=marketinfo0,many=True)
if serializer0.data!=[]:
prices = []
for i in range(1, 13):
marketinfo = marketinfo0.filter(month=i)
serializer = MarketModelSerializer(instance=marketinfo,many=True)
if serializer.data!=[]:
price = marketinfo.aggregate(Avg('price'))['price__avg']
else:
price=0
prices.append(price)
city_temps = {'market':market,'list':prices}
price_list.append(city_temps)
else:
return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)
return Response(price_list, status=HTTP_200_OK)
- 子路由
urlpatterns = [
path('avg_month_price',Avg_Month_PriceAPIView.as_view())
]
- 使用Postman进行测试
就OK了