FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
一、查询所有课程列表
逻辑就是返回所有课程
那么对应的crud
def getallcourse(db:Session): return db.query(Course).filter(Course.status == True).all()
接口的实现代码
1 2 3 4 5 6 7 8 9 10 11 12 13 | @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为
1 2 3 | def get_student_all(db: Session,user: int ): return db.query(Studentcourse). filter (Studentcourse.students = = user, Studentcourse.status = = False ). all () |
对应的接口是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @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)) |
其实还可以去查询老师所有的上架的课程的列表。
这里不再做代码罗列,很简单的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?