@course_data.route("/get_course",methods=['get'])
def course():
# 获取前端的数据
data = dict(request.args)
# 指定分页根据什么排序
order = request.args.get('order')
# 查看是否上限
online = int(request.args.get('online_status',1))
# 查看分类
cate = request.args.get('cate')
# 标签
tag = json.loads(request.args.get('tags','[]'))
# 这个感觉是上面的那个data,前端输入每页限制和从第几页开始
limit,offset = limit_framt(data)
# 前端的数据
serach = request.args.get('serach',None)
if not order:
# 将课程排序分页
data = Course.query.order_by(text('-sort_num')).limit(4).all()
return ret_route(200,orm2dict(data))
# 处理分页,通过判断课程是否上限来筛选
sql = Course.query.filter_by(online_status=online)
if cate:
# 通过分类查出
sql = sql.filter_by(cate=cate)
if serach:
# 最左匹配原则:联合索引
sql =Course.query.filter(Course.name.like(f"%{serach}%"))
return ret_route(data=orm2dict(sql))
if not order:
data = Course.query.order_by(text('-sort_num')).limit(4).all()
return ret_route(data=orm2dict(data))
if tag:
sql = sql.filter(course_tag.c.tag_id.in_(tag))
data = sql.order_by(text(order)).limit(limit).offset(offset * limit)
# join表,两个表连接,筛选出来数据排序
# data = sql.join(course_tag,course_tag.c.course_id == Course.id)\
# .filter().order_by(text(order)).limit(limit).offset(
# offset * limit).all()
return ret_route(200,data=orm2dict(data))
前端要传入用户想看的第几页数据,并且以什么来进行排序。