FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情
这个接口用户可以不用登录,因为我们的课程可以随便的人都可以预览。
那么我们梳理下这里面的逻辑
1.根据id判断课程是否存在
2.课程需要返回课程的详情
3.返回课程的评论
我们去设计对应的课程详情的pydantic 类。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class CoursesCommentBase(BaseModel): users: str pid: int addtime: str context: str class Coursescomment(CoursesCommentBase): id : int top: int class CousesDetail(Courses): id : int commonet: List [Coursescomment] = [] |
我们看对应的crud
1 2 3 4 5 6 | def db_get_course_id(db: Session, id : int ): return db.query(Course). filter (Course. id = = id , Course.status = = False ).first() def db_get_coursecomment_id(db: Session, id : int ): return db.query(Commentcourse). filter (Commentcourse.course = = id , Commentcourse.status = = False ). all () |
对应的业务逻辑代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @courseRouter .get(path = '/detail/{id}' ) async def detail( id : int , db: Session = Depends(get_db)): course = db_get_course_id(db, id ) if course: coursedetail = CousesDetail( id = course. id , name = course.name, icon = course.icon, desc = course.desc, catalog = course.catalog, onsale = course.onsale, owner = get_user(db, course.owner).username, likenum = course.likenum) allcomments = db_get_coursecomment_id(db, course. id ) all_comments_list = [] if len (allcomments) > 0 : for item in allcomments: detailcomment = Coursescomment( id = item. id , top = item.top, users = get_user(db, item.users).username, pid = item. id , addtime = str (item.addtime), context = item.context) all_comments_list.append(detailcomment) coursedetail.commonet = all_comments_list return reponse(code = 200 , message = '成功' , data = jsonable_encoder(coursedetail)) return reponse(code = 200 , message = "成功" , data = '') |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?