Flask综合案例展示二手车信息页、详情页和用户浏览记录,收藏信息
展示信息页
先写思路:
- 根据图我们可以得到需要返回的数据
- 在models的车类中添加方法返回我们需要的数据
- 然后根据前端查询车的品牌、模型等各种信息不同展示数据,这里只简单写了品牌和模型
models.py文件添加方法:
class Car(db.Model):
...
def to_list_dict(self):
# 返回列表页的数据
# 需要的数据:品牌,模型 detail
# 价格,年份,公里数 id 默认图片
car_obj_dict = {
'brand': self.brande.name,
'model': self.model.name,
'detail': self.model.detail,
'price': self.price,
'car_register_time': self.annual_datetime,
'car_distance': self.car_distance,
'car_id': self.id,
# 默认图片
'index_image_url': QINIUURL+self.index_image_url
}
return car_obj_dict
然后是展示数据的函数:
@api.route('/cars')
def cars_list_info():
# 将是一个get请求,返回车辆列表
# 有可能为空
brand = request.args.get('brand')
car_model = request.args.get('model')
print(request.args.get('price'))
if len(brand) == 0 and len(car_model) == 0:
cars_lists = Car.query.all()
print(cars_lists)
ret_data_list = []
for each in cars_lists:
# 调用对象的方法来实现转dict
ret = each.to_list_dict()
print(ret)
# 添加进字典
ret_data_list.append(ret)
print(ret_data_list)
return jsonify(data=ret_data_list)
elif len(brand) == 0 and len(car_model) !=0:
# 只有型号没有品牌
car_lists = Car.query.all()
ret_data_list = [] # todo 需要返回的数据
for each in car_lists:
if each.brande.car_model == car_model:
print(car_model)
return jsonify(data=ret_data_list)
elif len(brand) != 0 and len(car_model) ==0:
# 只有品牌
brand_id = Brande.query.filter_by(name=brand).first().id
cars_lists = Car.query.filter_by(brande_id=brand_id).all()
ret_data_list =