FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程

Posted 北漂的雷子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程相关的知识,希望对你有一定的参考价值。

我们先看下加入课程

梳理下对应的逻辑

1.判断是否登录
2.判断课程是否存在
3.判断是否已经在列表
4.成功添加

 

    进入正式的开发,我们首先看下curd

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
接着,我们看下做后的业务是如何实现的
@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需要新增

def rebck_couses(db:Session,student:Studentcourse):
    student.status=True
    db.add(student)
    db.commit()
    db.refresh(student)
    return student

   那么我们按照上面的逻辑,对应的实际的代码就是

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

  

  

 

以上是关于FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程的主要内容,如果未能解决你的问题,请参考以下文章

FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论

FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论

FastAPI(六十八)实战开发《在线课程学习系统》接口开发--用户 个人信息接口开发

第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装

深度学习核心技术精讲100篇(七十九)-深度学习应用实战案例:携程金融自动化迭代反欺诈模型体系

深度学习核心技术精讲100篇(七十九)-深度学习应用实战案例:携程金融自动化迭代反欺诈模型体系