当前位置: 首页 > 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…...

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

...

从标准到实战:网络变压器在POE应用中的AF/AT/BF/BT详解与电路设计指南

1. 网络变压器在POE系统中的核心作用 第一次接触POE供电系统时&#xff0c;我对着电路板上那个带铁壳的方形元件研究了半天——这就是网络变压器。它看起来平平无奇&#xff0c;却是整个POE系统的"心脏"。简单来说&#xff0c;网络变压器在POE系统中要同时干两件事&a…...

Verdi隐藏技巧:不为人知的VC Apps批处理参数大全(以listRegisters为例)

Verdi隐藏技巧&#xff1a;VC Apps批处理参数深度解析与实战指南 在芯片验证领域&#xff0c;Verdi作为业界领先的调试工具&#xff0c;其VC Apps组件提供了强大的批处理能力。本文将深入探讨官方文档未明确说明的高级参数技巧&#xff0c;特别是以listRegisters为例的实战应用…...

外贸人效率翻倍:用Python+Selenium自动抓取阿里巴巴国际站商家电话到Excel(附完整源码)

外贸人效率革命&#xff1a;零代码基础用PythonSelenium自动采集国际站客户数据 每天手动复制粘贴上百个商家信息的日子该结束了。作为外贸业务员&#xff0c;我们都经历过这样的场景&#xff1a;在阿里巴巴国际站反复切换页面&#xff0c;机械地记录公司名称、电话、产品类型&…...

Pyenv虚拟环境管理全攻略:从创建到迁移(Ubuntu20.04实战)

Pyenv虚拟环境管理全攻略&#xff1a;从创建到迁移&#xff08;Ubuntu20.04实战&#xff09; 在Python开发中&#xff0c;项目依赖管理一直是个令人头疼的问题。想象一下这样的场景&#xff1a;你正在维护一个基于Django 2.2的老项目&#xff0c;同时又要开发一个使用最新Djang…...

别再傻傻分不清:Electron-packager和Electron-builder到底怎么选?一份给新手的场景化选择指南

Electron打包工具选型指南&#xff1a;从场景需求看electron-packager与electron-builder的抉择 当你第一次尝试将Electron应用交付给用户时&#xff0c;面对electron-packager和electron-builder这两个主流打包工具&#xff0c;是否感到困惑&#xff1f;它们看似功能相似&…...

AudioSeal Pixel Studio代码实例:检测结果可视化图表生成脚本

AudioSeal Pixel Studio代码实例&#xff1a;检测结果可视化图表生成脚本 1. 工具概述与核心价值 AudioSeal Pixel Studio是一款基于Meta开源的AudioSeal算法构建的专业音频水印工具。它能够在保持原始音频质量的前提下&#xff0c;为音频文件嵌入几乎不可察觉的数字水印&…...

WarcraftHelper终极指南:魔兽争霸III现代化增强解决方案

WarcraftHelper终极指南&#xff1a;魔兽争霸III现代化增强解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为经典游戏…...

zynq ebaz4205开发板附带数字识别fpga例程 搭配ov7670/ov7725双目h...

zynq ebaz4205附带数字识别fpga例程代码 &#xff09;扩展板zynq摄像头采集hdmi显示zynq ebaz4205 手机充电线micro usb供电&#xff0c;包含ov双目hdmi扩展板、配有micro usb供电、摄像头手机充电器一般即可充电&#xff0c;使用ov7670或原子ov7725摄像头&#xff0c;需要部分…...

如何用GPT-3.5的function calling功能对接理杏仁API获取金融数据(附完整代码)

金融数据智能对接实战&#xff1a;基于GPT-3.5函数调用与理杏仁API的深度整合 在金融科技领域&#xff0c;数据获取与处理的自动化一直是开发者关注的焦点。传统API对接往往需要编写大量固定逻辑的代码&#xff0c;而大语言模型的出现为这一流程带来了新的可能性。本文将深入探…...

提升网络调试效率,快马AI一键生成端口扫描与服务检测实用脚本

最近在调试网络服务时&#xff0c;经常需要手动检查端口状态和接口可用性&#xff0c;重复劳动特别耗时。于是尝试用Python写了个自动化工具&#xff0c;发现效果不错&#xff0c;分享下实现思路和使用体验。 端口扫描功能实现 通过socket模块实现基础的TCP连接检查&#xff0c…...