FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
创始人
2024-12-16 09:36:22
0

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统"

课程编辑

先来看下课程编辑

1.判断是否登录

2.判断课程是否存在

3.是否有权限(只有自己可以修改自己的课程)

4.名称是否重复

首先,新增一个参数pydantic

class CourseEdit(Courses):     id: int

其次,增加主要逻辑

 def edit_course(course: CourseEdit, db: Session, user: UsernameRole):     """编辑课程"""     db_course = get_course_by_id(db, course.id)     if not db_course:         return response(code=101201, message="课程不存在")     db_user = get_by_username(db, user.username)     if db_user.id != course.owner:         return response(code=101202, message="权限不足")     exists = get_course_by_name(db, course.name)     if exists:         return response(code=101203, message="该课程名称已存在")     try:         # 这里只是修改课程的属性,上架下架不能在这改         db_course.catalog = course.catalog         db_course.desc = course.desc         db_course.icon = course.icon         db_course.name = course.name         db.commit()         db.refresh(db_course)     except:         logger.warning(f"method edit_course error:{traceback.format_exc()}")         return response(code=101204, message="修改失败")     return response() 

最后,实现接口api

@course_router.put("/", summary="编辑课程") def edit(         course: CourseEdit,         db: Session = Depends(create_db),         user: UsernameRole = Depends(get_current_user)):     return edit_course(course, db, user)

测试:

查看评论

接下来看下查看评论

1.判断课程是否存在

2.存在返回所有评论

主要逻辑

def get_course_comment(course_id: int, db: Session):     """获取课程评论"""     db_course = get_course_by_id(db, course_id)     if not db_course:         return response(code=101301, message="课程不存在")     comments = get_comment_by_course_id(db, course_id)     to_client = []     if comments:         for _ in comments:             detail_comment = CourseCommentOut(                 id=_.id,                 top=_.top,                 user=get_by_uid(db, _.user).username,                 pid=_.pid,                 add_time=str(_.add_time),                 context=_.context             )             to_client.append(detail_comment.dict())     return response(data=to_client)

因为course_schema.py中的CourseComment和models中的重名了,所以做了修改

class CourseCommentOut(CourseCommentBase):     id: int     top: int   class CourseDetail(Courses):     id: int     owner: str  # 此处重写该字段,返回给客户端时展示用户名而非id     comment: List[CourseCommentOut] = []

实现api

@course_router.get("/course_comment", summary="查看课程评论") def course_comment(course_id: int,         db: Session = Depends(create_db)):     return get_course_comment(course_id, db)

测试

这样我们的课程编辑和查看评论接口就完成了 

相关内容

热门资讯

透视窍门!epoker底牌透视... 透视窍门!epoker底牌透视(透视)cloudpoker怎么开挂(辅助)确实是有工具(哔哩哔哩)1...
透视机巧!佛手在线有挂吗(We... 透视机巧!佛手在线有挂吗(WePoKer分析)一贯真的是有辅助教程(哔哩哔哩)1、佛手在线有挂吗透视...
透视绝活儿!佛手在线大菠萝技巧... 透视绝活儿!佛手在线大菠萝技巧(透视)哈糖大菠萝有挂吗(辅助)一贯真的有神器(哔哩哔哩)1、实时佛手...
开挂了解!手机字牌辅助脚本工具... 开挂了解!手机字牌辅助脚本工具(辅助)66徐州麻将都是是真的辅助器(哔哩哔哩)1、操作简单,无需手机...
透视项目!拱趴游戏破解器(WP... 透视项目!拱趴游戏破解器(WPK德州局)总是真的有辅助软件(哔哩哔哩)透视项目!拱趴游戏破解器(WP...
透视手筋!epoker透视(透... 透视手筋!epoker透视(透视)德州私人局脚本(辅助)好像一直都是有方法(哔哩哔哩)德州私人局脚本...
关于了解!欢乐茶馆免费辅助设置... 关于了解!欢乐茶馆免费辅助设置(辅助)淮安掼蛋大师切实有挂辅助工具(哔哩哔哩)该软件可以轻松地帮助玩...
透视指南!约局吧德州透视(We... 透视指南!约局吧德州透视(WePoKer网页版)一贯有辅助软件(哔哩哔哩)1、约局吧德州透视辅助器安...
透视操作!约局吧德州有挂吗(透... 透视操作!约局吧德州有挂吗(透视)哈糖大菠萝挂(辅助)真是真的是有工具(哔哩哔哩)1、用户打开应用后...
关于了解!荔枝竞技修改器(辅助... 关于了解!荔枝竞技修改器(辅助)亲邻麻将其实真的有辅助平台(哔哩哔哩)1、荔枝竞技修改器辅助器安装包...