FastAPI(七十六)实战开发《在线课程学习系统》接口开发-- 课程详情

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

这个接口用户可以不登录,因为我们的课程随意浏览

那么我们梳理下这里的逻辑

1.根据课程id判断课程是否存在

2.课程需要返回课程的详情

3.返回课程的评论

首先,我们去设计对应的pydantic类,course_schema.py

class CourseCommentBase(BaseModel):user: strpid: intadd_time: strcontext: strclass CourseComment(CourseCommentBase):id: inttop: intclass CourseDetail(Courses):id: intowner: str  # 此处重写该字段,返回给客户端时展示用户名而非idcomment: List[CourseComment] = []

下面是具体逻辑:course_method.py

def get_course_by_id(db: Session, id: int):"""根据课程id获取课程"""return db.query(Course).filter(Course.id == id, Course.status == False).first()def get_comment_by_course_id(db: Session, course_id: int):return db.query(CourseComment).filter(CourseComment.course == course_id, CourseComment.status == False).all()def get_course_detail(course_id: int, db: Session):"""获取课程详情"""db_course = get_course_by_id(db, course_id)if not db_course:return response(code=101101, message="该课程不存在")try:course_detail = CourseDetail(id=db_course.id,name=db_course.name,icon=db_course.icon,desc=db_course.desc,catalog=db_course.catalog,onsale=db_course.onsale,owner=get_by_uid(db, db_course.owner).username,like_num=db_course.like_num)course_comments = get_comment_by_course_id(db, db_course.id)to_client_comments = []if course_comments:for _ in course_comments:detail_comment = CourseComment(id=_.id,top=_.top,user=get_by_uid(db, _.user).username,pid=_.id,add_time=str(_.add_time),context=_.context)to_client_comments.append(detail_comment)course_detail.comment = to_client_commentsexcept:logger.warning(f"查看课程详情失败")return response(code=101102, message="查看详情失败")return response(data=course_detail.dict())

最后实现我们的接口api,course.py

@course_router.get("/", summary="获取课程详情")
def detail(course_id: int, db: Session = Depends(create_db)):return get_course_detail(course_id, db)

测试:

以上就是我们的课程详情接口,等评论接口开发好后回头再测试一下该接口

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# Task.WaitAll 的用法

目录 简介 1.WaitAll(Task[], Int32, CancellationToken) 2.WaitAll(Task[]) 3.WaitAll(Task[], Int32) 4.WaitAll(Task[], CancellationToken) 5.WaitAll(Task[], TimeSpan) 结束 简介 Task.WaitAll 是 C# 中用于并行编程的一个的方法,它属于 System.Threa…

DjangoRF-5-用户管理-users接口

1、创建模型,user模型之前创建过了,继承了原有的模型类 2、序列化器 在 users/serializers.py 模块中添加: class UserSerializer(serializers.ModelSerializer):class Meta:model Userfields [id, username, password, mobile, email, is…

【简单讲解Perl语言】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

基于微信小程序+SpringBoot+Vue的核酸检测服务系统(带1w+文档)

基于微信小程序SpringBootVue的核酸检测服务系统(带1w文档) 基于微信小程序SpringBootVue的核酸检测服务系统(带1w文档) 在目前的情况下,可以引进一款医院核酸检测服务系统这样的现代化管理工具,这个工具就是解决上述问题的最好的解决方案。它不仅可以实…

20240727生活沉思------------关于报考软考高级架构师

软考高级架构师 软考高级架构师 缴费 主要是报的千峰 1880元。 相对来说还算可以吧。。。其他也没给我机会选择啊 备考 我现在开始备考,考试时间2024年11月。 今天是正式开始7.27号。 给大家看看接下来我的课程安排: 额,还是满满当当的…

日入800+小红书AI表情包项目拆解

一个高考结束之后,进入暑假,只要有手就能做的AI搞钱项目,不到2个月的时间在小某书上成功涨粉5w,通过发布广告,一条广告甚至还能赚到2000元; 只要有市场需求就可以制作这种表情包快速搞钱,上手非…

openmv 学习笔记(24电赛笔记)

模版匹配 模版匹配是一种计算机视觉技术,用于图像或者视频中查找特定的模版或者对象,查找模版可以是数字或者是物体,技术通过在目标图像中寻找与模版图像相似的区域来实现匹配。这种技术最早起源在 20世纪70年代 的图像处理领域。 使用模版匹…

网络编程总复习

TCP的创建: 服务器端 : 客户端:

【计算机网络】IP分片实验

一:实验目的 1:理解IP数据报分片的工作原理。 2:理解IP协议报文类型和格式。 二:实验仪器设备及软件 硬件:RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。 软件:记事本、WireShark、Chrom…

倒计时11天,生物发酵行业盛宴即将在沪召开!

随着生物科技领域的蓬勃发展,2024上海生物发酵展的召开已经进入倒计时阶段,距离这场生物发酵产业的年度盛事仅剩11天。作为行业内备受瞩目的展会,它不仅汇聚了全球顶尖的生物发酵技术、产品与服务,更是一个探讨行业趋势、促进合作…

c++语言学习注意事项

当学习C语言时,有几个重要的注意事项可以帮助初学者更有效地掌握这门强大的编程语言: 1. 理解基本概念和语法 C 是一门复杂且功能强大的编程语言,因此理解其基本概念和语法至关重要。初学者应该重点掌握以下几个方面: 基本语法和…

最小二乘法公式推导

微积分和线性代数碰撞的数学盛宴:最小二乘法公式推导!_哔哩哔哩_bilibili 递归最小二乘法与参数辨识_哔哩哔哩_bilibili 笔记

护眼灯有没有护眼的效果?一文揭秘用护眼灯到底好不好

护眼灯有没有护眼的效果?在现在这个时代,无论是在学习还是办公,都很难离开一款好用的台灯,所以,为了避免会挑选到质量不好的台灯,我们应该要先避开一些网红小品牌,优先选择有专业技术支持的&…

数据库作业四

1. 修改 student 表中年龄( sage )字段属性,数据类型由 int 改变为 smallint : ALTER TABLE student MODIFY Sage SMALLINT; 2. 为 Course 表中 Cno 课程号字段设置索引,并查看索引: ALTER TABLE…

JS+H5在线文心AI聊天(第三方接口)

源码在最后面 调用的不是文心官方接口 可以正常聊天 有打字动画 效果图 源代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

科技与占星的融合:AI 智能占星师

本文由 ChatMoney团队出品 在科技的前沿领域&#xff0c;诞生了一位独特的存在——AI占星师。它并非传统意义上的占星师&#xff0c;而是融合了先进的人工智能技术与神秘的占星学知识。 这能够凭借其强大的数据分析能力和精准的算法&#xff0c;对星辰的排列和宇宙的能量进行深…

VLC输出NDI媒体流

目录 1. 下载安装VLC Play 2. 首先在电脑上安装NDI Tools 3. 运行VLC进行输出配置 4. 播放视频 5. 验证 (1)用Studio Monitor验证 (2)用OBS验证 NDI(Network Device Interface)即网络设备接口,是由美国 NewTek 公司开发的免费标准,它可使兼容的视频产品以高质量…

爬虫 APP 逆向 ---> 粉笔考研

环境&#xff1a; 粉笔考研 v6.3.15&#xff1a;https://www.wandoujia.com/apps/1220941/history_v6031500雷电9 模拟器&#xff1a;https://www.ldmnq.com/安装 magisk&#xff1a;https://blog.csdn.net/Ruaki/article/details/135580772安装 Dia 插件 (作用&#xff1a;禁…

RT-Thread debug 卡死在Stm32_putc问题分析解决

问题和解决方法 找了块开发板玩RT-Thread&#xff0c;一顿骚操作之后&#xff0c;发现debug就卡死在Stm32_putc(不稳定&#xff0c;反复重新上下电&#xff0c;重来有时候卡死有时候不卡死)&#xff0c;卡死情况如下图&#xff1a; 先最后的解决方法&#xff1a;取消调默认的内…

Qt学习--对象树的概念

文章目录 QPushButton 按钮Qt中对象树的概念封装自定义控件 QPushButton 按钮 学习对象树之前&#xff0c;我们得先学习基本控件的创建。创建一个按钮 创建一个按钮&#xff1a;第一种方法 // 创建一个按钮QPushButton *btn new QPushButton;// 设置控件的父对象btn->setP…