当前位置: 首页 > news >正文

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

源码见:"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.catalogdb_course.desc = course.descdb_course.icon = course.icondb_course.name = course.namedb.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: inttop: intclass CourseDetail(Courses):id: intowner: str  # 此处重写该字段,返回给客户端时展示用户名而非idcomment: 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)

测试

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

相关文章:

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

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 课程编辑 先来看下课程编辑 1.判断是否登录 2.判断课程是否存在 3.是否有权限(只有自己可以修改自己的课程) 4.名称是否重复…...

【JavaEE初阶】线程的概念及创建

目录 📕 前言 📕 认识线程(Thread) 🚩 概念 😊线程是什么 🙂 为啥要有线程 😭 进程和线程的区别(面试题重点) 🤭 Java的线程和操作系统线程…...

0727,学什么学,周六就应该休息!!!!!

周六就应该休息,一天就忙了两小时也不是我的错喵 目录 UDP的小总结 01:使用select实现一个基于UDP的一对一即时聊天程序。 1.0 复读机服务器和树洞客户端 2.0 byby不了一点的敬业服务器!!! 今天到此为止&#x…...

【C#】获取DICOM图像像素的像素值

8位像素深度的像素值 public byte GetGreyValue(int x, int y) {x Math.Min(x, m_nWidth - 1);y Math.Min(y, m_nHeight - 1);unsafe{byte* greyValue (byte*)m_pDicomData.ToPointer() y * m_nWidth x;return *greyValue;} } 16位像素深度的像素值 public ushort GetG…...

k8s多集群管理工具kubecm

文章目录 一、概述二、安装1、官网链接2、各平台安装2.1、MacOS2.2、Linux2.3、Windows 三、实例1、验证2、配置kubecm自动补全(选做)2.1、Bash2.2、Zsh2.3、fish2.4、PowerShell 3、创建存放kubeconfig文件的目录4、添加到 $HOME/.kube/config4.1、kube…...

通过 WSL 2 在Windows 上挂载 Linux 磁盘

原文查看 曾为了传输或者共享不同系统的文件频繁地在 Windows 和 Linux 系统之间切换,效率过低,所以尝试通过 WSL 2 在Windows 上挂载 Linux 磁盘。 先决条件 需要在Windows 10 2004 及更高版本(Build 19041 及更高版本)或 Win…...

【C#】在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合?

问题点 使用C#语言在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合? 这个多边形可能存在交叉及互相重叠部分 图像的宽、高可以定义为:2000*2000 多边形坐标集合:Point[] polygon_points new Point[] { new Point…...

json的数据结构

JSON 的数据结构 JSON 由两种数据结构组成:对象(字典)和数组。 一、对象 对象(object)是由键值对组成的无序集合。 键是字符串,值可以是任何类型,包括对象和数组;对象由一对花括…...

html-docx-js和file-saver实现html导出word

依赖html-docx-js,file-saver,html2canvas import { asBlob } from html-docx-js/dist/html-docx; import { saveAs } from file-saver; import html2Canvas from html2canvas;const handleImageToBase64 (cloneEle) > {let imgElements cloneEle.…...

三维影像系统PACS源码,图像存储与传输系统,应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统

PACS,即图像存储与传输系统,是应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统。目标是支持在医院内部所有关于图像的活动,集成了医疗设备,图像存储和分发,数字图像在重要诊断和会诊时的显示&a…...

Golang | Leetcode Golang题解之第292题Nim游戏

题目: 题解: func canWinNim(n int) bool {return n%4 ! 0 }...

Redis在SpringBoot中配置

lettuce redis的使用方法有两种&#xff0c;jedis和lecttuce&#xff0c;jedis用的不是很多&#xff0c;下面讲解用lettuce的使用方法。 首先导包&#xff1a; <!--redis依赖--> <dependency><groupId>org.springframework.boot</groupId><artif…...

linux 网络子系统

__netif_receive_skb_core 是 Linux 内核网络子系统中一个非常重要的函数&#xff0c;它负责将网络设备驱动层接收到的数据包传递到上层协议栈进行处理。以下是对该函数的一些关键点的详细解析&#xff1a; 一、函数作用 __netif_receive_skb_core 函数是处理接收到的网络数据…...

JVM:垃圾回收器演进

文章目录 一、演进二、Shenandoah三、ZGC 一、演进 二、Shenandoah Shenandoah是由Red Hat开发的一款低延迟的垃圾收集器&#xff0c;Shenandoah并发执行大部分GC工作&#xff0c;包括并发的整理&#xff0c;堆大小对STW的时间基本没有影响。 三、ZGC ZGC是一种可扩展的低延…...

全新微软语音合成网页版源码,短视频影视解说配音网页版系统-仿真人语音

源码介绍 最新微软语音合成网页版源码&#xff0c;可以用来给影视解说和短视频配音。它是TTS文本转语言&#xff0c;API接口和PHP源码。 这个微软语音合成接口的源码&#xff0c;超级简单&#xff0c;就几个文件搞定。用的是官方的API&#xff0c;试过了&#xff0c;合成速度…...

大语言模型-对比学习-Contrastive Learning

一、对比学习概念 对比学习是一种特殊的无监督学习方法。 旨在通过拉近相关样本的距离并且推远不相关样本的距离&#xff0c;来学习数据表示。 通常使用一种高自由度、自定义的规则来生成正负样本。在模型预训练中有着广泛的应用。 二、对比学习小案例 对比学习主要分为三个…...

C++ 封装的用法

C(七)封装 封装&#xff0c;可以达到&#xff0c;对外提供接口&#xff0c;屏蔽数据&#xff0c;对内开放数据。 权限控制 struct 中所有行为和属性都是 public 的(默认)&#xff0c;此举也是为了 C兼容 C 语言&#xff0c; 因为 C 语言中没有权限的概念。 C中的 class 可以…...

【C++11:异常】

目录 抛异常标准书写格式 抛异常如何执行&#xff1f; 指定抛出异常类型&#xff1a; noexcept 关键字&#xff1a;throw 抛异常标准书写格式 抛异常如何执行&#xff1f; 当212行的异常被抛出&#xff0c;程序会重新返回函数func中&#xff0c;在函数中去寻找catch 语句的…...

Dify中HTTP请求节点的常见操作

HTTP节点包括API请求类型&#xff08;GET、POST、HEAD、PATCH、PUT、DELETE&#xff09;&#xff0c;鉴权类型&#xff08;无、API-Key基础、API-Key Bearer、API-Key自定义&#xff09;&#xff0c;HEADERS键值设置&#xff0c;PARAMS键值设置&#xff0c;BODY&#xff08;non…...

《大语言模型(赵鑫)》知识框图

...

从DICOM到NIfTI:3D Slicer中医学图像坐标转换的完整避坑指南(附Python代码片段)

从DICOM到NIfTI&#xff1a;3D Slicer中医学图像坐标转换的完整避坑指南&#xff08;附Python代码片段&#xff09; 医学影像处理中&#xff0c;数据格式和坐标系的差异常常成为工程师和研究员们的"隐形杀手"。想象一下&#xff0c;你花了三天三夜训练的深度学习模型…...

终极指南:Sunshine开源游戏串流服务器完整配置与实战应用

终极指南&#xff1a;Sunshine开源游戏串流服务器完整配置与实战应用 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的自托管游戏串流服务器&#xff0c;专…...

GlosSI完全攻略:一键实现Steam控制器全局支持的终极方案

GlosSI完全攻略&#xff1a;一键实现Steam控制器全局支持的终极方案 【免费下载链接】GlosSI Tool for using Steam-Input controller rebinding at a system level alongside a global overlay 项目地址: https://gitcode.com/gh_mirrors/gl/GlosSI 有没有想过&#xf…...

用Matplotlib heatmap分析你的数据:从农产品收成到商品销量的实战案例拆解

用Matplotlib heatmap解锁业务洞察&#xff1a;从农场到电商的数据可视化实战 热力图&#xff08;heatmap&#xff09;远不止是颜色方块的排列——它是数据与商业决策之间的视觉桥梁。想象一下&#xff0c;你面前有一张农场作物产量的热力图&#xff0c;颜色从深绿渐变到亮黄&a…...

5V/7.4V/12V三个升压档位!智能门锁供电选它

在智能门锁硬件设计与实操过程中&#xff0c;常见的痛点是锂电池的常见电压&#xff08;3.7V、3.2V&#xff09;与门锁电机的工作电压需求&#xff08;5V、7.4V、甚至12V&#xff09;不匹配&#xff0c;电压不足直接导致电机无法正常驱动&#xff0c;进而影响门锁开关功能的实现…...

FastAPI部署演进:从Gunicorn+Uvicorn镜像到原生多进程的迁移指南

1. 项目背景与演进&#xff1a;从“黄金搭档”到“历史遗产”如果你在过去几年里用 FastAPI 部署过 Web 服务&#xff0c;大概率听说过或者用过tiangolo/uvicorn-gunicorn-fastapi-docker这个 Docker 镜像。它一度是 FastAPI 官方文档里推荐的部署方案之一&#xff0c;由 FastA…...

Python自动化交易:Kalshi预测市场API封装与量化策略实践

1. 项目概述&#xff1a;一个为Kalshi预测市场打造的自动化工具箱如果你对预测市场感兴趣&#xff0c;或者正在寻找一种程序化的方式来管理你在Kalshi平台上的交易活动&#xff0c;那么你可能会对这个名为kalshi-skill的项目产生共鸣。简单来说&#xff0c;这是一个基于Python的…...

从数据中心视角聊token

“我爱你”被AI拆解成了3个tokens&#xff0c;“I love U”也同样被AI拆解成了3个tokens&#xff0c;AI将人类的语言拆解到可被数据分析的最小单位&#xff0c;叫做token&#xff0c;中文是词元&#xff0c;AI通过数据模型的分析&#xff0c;又将无数的token组成了答复反馈给用…...

保边滤波深度学习红外可见光融合算法【附程序】

✨ 长期致力于红外与可见光图像融合、快速引导滤波器、交替引导滤波器、深度学习、卷积神经网络研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;双支流…...

如何实现微信聊天记录永久保存:WeChatMsg完整备份终极指南

如何实现微信聊天记录永久保存&#xff1a;WeChatMsg完整备份终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...