第四周第二次
主要进行了相关数据的处理,将新处理的预测数据整理整合到一个新的表格中,并通过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)