项目实训11

第四周第二次

主要进行了相关数据的处理,将新处理的预测数据整理整合到一个新的表格中,并通过Django在数据库中创建新的表,将整理好的数据导入进去。

#自己爬取的数据集的市场价格预测数据
class Predictnew(models.Model):
    objects = models.Manager()
    actual_type = models.CharField(max_length=255, default='', verbose_name="准确类型")
    dim_type = models.CharField(max_length=255, default='', verbose_name="模糊类型")
    unit = models.CharField(max_length=255, default='', verbose_name="单位")
    market = models.CharField(max_length=255, default='', verbose_name="市场名称")
    today = models.FloatField(default=0, verbose_name="当天价格")
    one = models.FloatField(default=0, verbose_name="第一天预测")
    two = models.FloatField(default=0, verbose_name="第二天预测")
    three = models.FloatField(default=0, verbose_name="第三天预测")
    four = models.FloatField(default=0, verbose_name="第四天预测")
    five = models.FloatField(default=0, verbose_name="第五天预测")

    class Meta:
        db_table = 'predictnew'
        verbose_name = "新预测价格信息"

 参与后端相关代码的编写和开发

 

#获取各个城市对应的总产量表升序
class Ascweight(APIView):
    def post(self, request):
        userinput = request.data
        userinfo = Citycrop.objects.filter(year=userinput["year"], crop_type=userinput["type"]).order_by('weight_all')
        weight_list = []
        serializer = CitycropModelSerializer(instance=userinfo, many=True)
        if serializer != []:
            for i in range(len(serializer.data)):
                weight_dict = {

                    'city': serializer.data[i]["city"],
                    'weight_all': serializer.data[i]["weight_all"]
                }
                weight_list.append(weight_dict)
            return Response(weight_list, status=HTTP_200_OK)
        else:
            return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)


#获取各个城市对应的总产量表降序
class Descweight(APIView):
    def post(self, request):
        userinput = request.data
        userinfo = Citycrop.objects.filter(year=userinput["year"], crop_type=userinput["type"]).order_by('-weight_all')
        weight_list = []
        serializer = CitycropModelSerializer(instance=userinfo, many=True)
        if serializer != []:
            for i in range(len(serializer.data)):
                weight_dict = {

                    'city': serializer.data[i]["city"],
                    'weight_all': serializer.data[i]["weight_all"]
                }
                weight_list.append(weight_dict)
            return Response(weight_list, status=HTTP_200_OK)
        else:
            return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)

 

效果如下:

  

 代码如下:

# 返回所有商品名字
class Alltype(APIView):
    def get(self, request):
        userinfo = Predict.objects.values('actual_type').distinct().order_by("actual_type")
        serializer = PredictModelSerializer(instance=userinfo, many=True)
        actualtype = []
        for i in range(len(serializer.data)):
            actualtype.append(serializer.data[i]["actual_type"])
        type_list = {"type": actualtype}
        return Response(type_list, status=HTTP_200_OK)


# 返回含有指定商品的所有市场
class Type_market(APIView):
    def post(self, request):
        goodname = request.data['goodname']
        predictinfo = Predict.objects.filter(actual_type=goodname).values("market").distinct().order_by("market")
        serializer = PredictModelSerializer(instance=predictinfo, many=True)
        market_list = []
        if serializer.data != []:
            for predict in serializer.data:
                market_list.append(predict["market"])
        else:
            return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)
        return Response(market_list, status=HTTP_200_OK)


# 返回指定商品市场的预测数据
class Type_market_predict(APIView):
    def post(self, request):
        goodname = request.data['goodname']
        market_list = request.data['checkedMarkets']
        predict_list = []
        for market in market_list:
            marketinfo = Predict.objects.filter(actual_type=goodname, market=market)
            serializer = PredictModelSerializer(instance=marketinfo, many=True)
            if serializer.data != []:

                for i in range(len(serializer.data)):
                    price_dict = {
                        'market': serializer.data[i]["market"],
                        'today': serializer.data[i]["today"],
                        'one': serializer.data[i]["one"],
                        'two': serializer.data[i]["two"],
                        'three': serializer.data[i]["three"],
                        'four': serializer.data[i]["four"],
                        'five': serializer.data[i]["five"],
                    }
                    predict_list.append(price_dict)
            else:
                return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)

        return Response(predict_list, status=HTTP_200_OK)


# 返回所有市场名字
class Allmarket(APIView):
    def get(self, request):
        userinfo = Predict.objects.values('market').distinct().order_by("market")
        serializer = PredictModelSerializer(instance=userinfo, many=True)
        market = []
        for i in range(len(serializer.data)):
            market.append(serializer.data[i]["market"])
        market_list = {"market": market}
        return Response(market_list, status=HTTP_200_OK)


# 返回含有指定市场的所有商品
class Market_type(APIView):
    def post(self, request):
        market = request.data['market']
        predictinfo = Predict.objects.filter(market=market).values("actual_type").distinct().order_by("actual_type")
        serializer = PredictModelSerializer(instance=predictinfo, many=True)
        type_list = []
        if serializer.data != []:
            for predict in serializer.data:
                type_list.append(predict["actual_type"])
        else:
            return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)
        return Response(type_list, status=HTTP_200_OK)


# 返回指定商品市场的预测数据
class Market_type_predict(APIView):
    def post(self, request):
        market = request.data['market']
        types = request.data['checkedTypes']

        type_list = types.split(',')
        predict_list = []
        for type in type_list:
            typeinfo = Predict.objects.filter(actual_type=type, market=market)
            serializer = PredictModelSerializer(instance=typeinfo, many=True)
            if serializer.data != []:

                for i in range(len(serializer.data)):
                    price_dict = {
                        'type': serializer.data[i]["actual_type"],
                        'today': serializer.data[i]["today"],
                        'one': serializer.data[i]["one"],
                        'two': serializer.data[i]["two"],
                        'three': serializer.data[i]["three"],
                        'four': serializer.data[i]["four"],
                        'five': serializer.data[i]["five"],
                    }
                    predict_list.append(price_dict)
            else:
                return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)

        return Response(predict_list, status=HTTP_200_OK)


# 返回所有商品名字
class Alltype_new(APIView):
    def get(self, request):
        userinfo = Predictnew.objects.values('actual_type').distinct().order_by("actual_type")
        serializer = PredictnewModelSerializer(instance=userinfo, many=True)
        actualtype = []
        for i in range(len(serializer.data)):
            actualtype.append(serializer.data[i]["actual_type"])
        type_list = {"type": actualtype}
        return Response(type_list, status=HTTP_200_OK)


# 返回含有指定商品的所有市场
class Type_market_new(APIView):
    def post(self, request):
        goodname = request.data['goodname']
        predictinfo = Predictnew.objects.filter(actual_type=goodname).values("market").distinct().order_by("market")
        serializer = PredictnewModelSerializer(instance=predictinfo, many=True)
        market_list = []
        if serializer.data != []:
            for predict in serializer.data:
                market_list.append(predict["market"])
        else:
            return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)
        return Response(market_list, status=HTTP_200_OK)


# 返回指定商品市场的预测数据
class Type_market_predict_new(APIView):
    def post(self, request):
        goodname = request.data['goodname']
        market_list = request.data['checkedMarkets']
        predict_list = []
        for market in market_list:
            marketinfo = Predictnew.objects.filter(actual_type=goodname, market=market)
            serializer = PredictnewModelSerializer(instance=marketinfo, many=True)
            if serializer.data != []:

                for i in range(len(serializer.data)):
                    price_dict = {
                        'market': serializer.data[i]["market"],
                        'today': serializer.data[i]["today"],
                        'one': serializer.data[i]["one"],
                        'two': serializer.data[i]["two"],
                        'three': serializer.data[i]["three"],
                        'four': serializer.data[i]["four"],
                        'five': serializer.data[i]["five"],
                    }
                    predict_list.append(price_dict)
            else:
                return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)

        return Response(predict_list, status=HTTP_200_OK)


# 返回所有市场名字
class Allmarket_new(APIView):
    def get(self, request):
        userinfo = Predictnew.objects.values('market').distinct().order_by("market")
        serializer = PredictnewModelSerializer(instance=userinfo, many=True)
        market = []
        for i in range(len(serializer.data)):
            market.append(serializer.data[i]["market"])
        market_list = {"market": market}
        return Response(market_list, status=HTTP_200_OK)


# 返回含有指定市场的所有商品
class Market_type_new(APIView):
    def post(self, request):
        market = request.data['market']
        predictinfo = Predictnew.objects.filter(market=market).values("actual_type").distinct().order_by("actual_type")
        serializer = PredictnewModelSerializer(instance=predictinfo, many=True)
        type_list = []
        if serializer.data != []:
            for predict in serializer.data:
                type_list.append(predict["actual_type"])
        else:
            return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)
        return Response(type_list, status=HTTP_200_OK)


# 返回指定商品市场的预测数据
class Market_type_predict_new(APIView):
    def post(self, request):
        market = request.data['market']
        types = request.data['checkedTypes']

        type_list = types.split(',')
        predict_list = []
        for type in type_list:
            typeinfo = Predictnew.objects.filter(actual_type=type, market=market)
            serializer = PredictnewModelSerializer(instance=typeinfo, many=True)
            if serializer.data != []:

                for i in range(len(serializer.data)):
                    price_dict = {
                        'type': serializer.data[i]["actual_type"],
                        'today': serializer.data[i]["today"],
                        'one': serializer.data[i]["one"],
                        'two': serializer.data[i]["two"],
                        'three': serializer.data[i]["three"],
                        'four': serializer.data[i]["four"],
                        'five': serializer.data[i]["five"],
                    }
                    predict_list.append(price_dict)
            else:
                return Response({"message": "数据为空"}, status=HTTP_204_NO_CONTENT)

        return Response(predict_list, status=HTTP_200_OK)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值