FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程
我们先看下加入课程
梳理下对应的逻辑
1.判断是否登录
2.判断课程是否存在
3.判断是否已经在列表
4.成功添加
进入正式的开发,我们首先看下curd
1 2 3 4 5 6 7 8 9 10 11 12 | def get_student(db: Session, couese: int ,user: int ): return db.query(Studentcourse). filter (Studentcourse.course = = couese, Studentcourse.students = = user, Studentcourse.status = = True ).first() def add_student_course(db: Session, couese: int ,user: int ): studentcourse = Studentcourse(students = couese, course = user) db.add(studentcourse) db.commit() db.refresh(studentcourse) return studentcourse |
接着,我们看下做后的业务是如何实现的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @courseRouter .get(path = '/add/{id}' ) async def add( id : int ,user: UsernameRole = Depends(get_cure_user), db: Session = Depends(get_db)): users = get_user_username(db,user.username) if user.role = = '教师' : return reponse(code = 101503 ,message = "老师不能加入课程" ,data = '') couses = db_get_course_id(db, id ) if not couses: return reponse(code = 101501 ,message = '课程id不存在' ,data = '') userstudent = get_student(db,couses. id ,users. id ) if userstudent: return reponse(code = 101502 , message = '课程不能重复加入' , data = '') reslut = add_student_course(db,couses. id ,users. id ) return reponse(code = 200 ,message = '成功' ,data = reslut. id ) |
我们来看下退出课程的接口实现
我们分析下这里的逻辑
1.判断是否登录 2.登陆用户必须是学生才可以退出 3.判断课程是否存在学生的课表 4.存在则退出
对应的crud需要新增
1 2 3 4 5 6 | def rebck_couses(db:Session,student:Studentcourse): student.status = True db.add(student) db.commit() db.refresh(student) return student |
那么我们按照上面的逻辑,对应的实际的代码就是
1 2 3 4 5 6 7 8 9 10 11 12 | @courseRouter .get(path = '/quit/{id}' ) async def quit( id : int ,user: UsernameRole = Depends(get_cure_user), db: Session = Depends(get_db)): users = get_user_username(db, user.username) if user.role = = "老师" : return reponse(code = 101603 , message = '老师不能退出课程' , data = '') couses = get_student(db, id ,users. id ) if not couses: return reponse(code = 101602 , message = '课程不在自己列表' , data = '') reslut = rebck_couses(db,couses) return reponse(code = 200 , message = '成功' , data = reslut. id ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?