1. 程式人生 > 其它 >FastAPI(八十)實戰開發《線上課程學習系統》介面開發-- 課程列表

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))

  

其實還可以去查詢老師所有的上架的課程的列表。

這裡不再做程式碼羅列,很簡單的。