FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
一、查询所有课程列表
逻辑就是返回所有课程
那么对应的crud
def getallcourse(db:Session): return db.query(Course).filter(Course.status == True).all()
接口的实现代码
@courseRouter.get("/list")
async def list(db:Session=Depends(get_db)):
allcouese=getallcourse(db)
all_course=[]
if len(allcouese)>0:
for item in allcouese:
coursedetail = CousesDetail(id=item.id,
name=item.name,
icon=item.icon, desc=item.desc, catalog=item.catalog,
onsale=item.onsale, owner=get_user(db, item.owner).username,
likenum=item.likenum)
all_course.append(coursedetail)
return reponse(code=200,message='成功',data=jsonable_encoder(all_course))
这个接口其实实现的很简单。
课程列表除了返回所有的课程,如果是学生还应该返回自己的课程列表。
那么我们看下如何实现
对应的crud为
def get_student_all(db: Session,user:int):
return db.query(Studentcourse).filter(Studentcourse.students == user,
Studentcourse.status == False).all()
对应的接口是
@courseRouter.get("/courselist")
async def courselist(user: UsernameRole = Depends(get_cure_user),db:Session=Depends(get_db)):
if user.role=="教师":
return reponse(code=200, message='成功', data='')
users=get_user_username(db,user.username)
allconut=get_student_all(db,users.id)
all_course = []
if len(allconut) > 0:
for item in allconut:
one=db_get_course_id(db,item.course)
coursedetail = CousesDetail(id=one.id,
name=one.name,
icon=one.icon, desc=one.desc, catalog=one.catalog,
onsale=one.onsale, owner=get_user(db, one.owner).username,
likenum=one.likenum)
all_course.append(coursedetail)
return reponse(code=200, message='成功', data=jsonable_encoder(all_course))
其实还可以去查询老师所有的上架的课程的列表。
这里不再做代码罗列,很简单的。