class MonitoredKeywordMore(APIView): def post(self, request): try: # 设置原生命令并且请求数据 parents_asin = str(request.data.get("parentsasin")) hour=str(request.data.get("hour")) # 执行原生mysql命令查询 raw_monitored_more = MonitoredMore(hour, parents_asin) obj_rawqueryset = models.MonitoredGoods.objects.raw(raw_monitored_more) # 对请求数据进行序列化 json_data = {} dict = {} for obj in obj_rawqueryset: if not dict.get(obj.single_keyWord): # 如果字典没有这个 关键词(key) dict[obj.single_keyWord] = [] # 就以这个关键词 为key 创建一个空的数组(用于添加以这个关键词为key的rank信息) {'shoes': []} # 创建一个字典添加这个关键词对应的所有排行 item = {} item["heat"] = obj.heat item["ranking"] = obj.ranking item["position"] = obj.position # 把这个关键词对对应的所有需要数据 做成一个字典放在组数里面 dict[obj.single_keyWord].append(item) else: item = {} item["heat"] = obj.heat item["ranking"] = obj.ranking item["position"] = obj.position dict.get(obj.single_keyWord).append(item) json_data['code'] = 200 return Response(dict) except Exception as e: dict_error={} msg = traceback.format_exc() print(msg) logging_main.keyword_error.error(msg) dict_error['message'] = "请求异常" dict_error['code'] = 10004 return JsonResponse(dict_error)
前端页面的展示:
// 请求数据 expandGoodsContent(resent, this.parentsasin).then(response => { if (response.code === 200) { this.keyWorkRanking = [] response.data.some((item, i) => { // 循环遍历数组 <开始> for (var key in item) { // console.log("this.keyWorkRanking", this.keyWorkRanking) // // console.log("键:", key); // console.log("值:", item[key][item[key].length-1]); // // console.log("最后一个值:", item[key]); // console.log("最后一个值的位置:",item[key][item[key].length-1].position.split(",")[1]); this.keyWorkRanking.push({ keyword: key, heat: item[key][item[key].length-1].heat, rank: item[key][item[key].length-1].ranking + "," + "第" + item[key][item[key].length-1].position.split(",")[0] + "页第" + item[key][item[key].length-1].position.split(",")[1] + "位", }) } // 循环遍历数组 <结束> console.log("this.keyWorkRanking",this.keyWorkRanking) }) } } 控制台展示: 图在下面