FastAPI(八十)實戰開發《線上課程學習系統》介面開發-- 課程列表
阿新 • • 發佈:2022-04-04
一、查詢所有課程列表
邏輯就是返回所有課程
那麼對應的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))
其實還可以去查詢老師所有的上架的課程的列表。
這裡不再做程式碼羅列,很簡單的。