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

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

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

梳理下思路

1.判断是否登录

2.课程是否存在

3.如果是回复,查看回复是否存在

4.是否有权限

5.发起评论

首先新增pydantic模型

class CourseCommentModel(BaseModel):"""发起评论参数"""id: intcomment: str = Field(min_length=1)pid: Optional[int] = None

其次实现主要逻辑


def to_comment_method(comment: CourseCommentModel, user: UsernameRole, db: Session):"""发起评论"""db_user = get_by_username(db, user.username)db_course = get_course_by_id(db, comment.id)if not db_course:return response(code=101401, message="课程不存在")if db_course.owner == db_user.id and comment.pid is None:return response(code=101404, message="自己不能评论自己的课程")if comment.pid:pid_course = get_course_by_id(db, comment.pid)if not pid_course:return response(code=101405, message="回复的评论不存在")return create_comment(db, comment, db_user.id)return create_comment(db, comment, db_user.id)def create_comment(db: Session, comment: CourseCommentModel, user: int):"""保存评论"""# 前提:自己不能给自己的课程发起评论,但是发起评论后可以给自己的评论回复try:to_db_comment = CourseComment(course=comment.id,user=user,pid=comment.pid,context=comment.comment)to_db_comment.user = userdb.add(to_db_comment)db.commit()db.refresh(to_db_comment)except:logger.warning(f"method create_comment error: {traceback.format_exc()}")return response(code=101402, message="评论失败")return response()

最后,实现接口api

@course_router.post("/course_comment", summary="发起评论")
def to_comment(comment: CourseCommentModel, user: UsernameRole = Depends(get_current_user),db: Session = Depends(create_db)):return to_comment_method(comment, user, db)

测试

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数字图像处理笔记(三) ---- 傅里叶变换的基本原理
  • ExcelJS:轻松实现Excel文件的读取、操作与写入
  • Redisson中的RBlockingQueue的使用场景及例子
  • java-jvm-软引用
  • 嵌入式C++、STM32、ROS系统和MQTT协议通讯:智能农业灌溉系统项目设计思路(代码示例)
  • 数据结构之深入理解简单选择排序:原理、实现与示例(C,C++)
  • Feign自定义调用第三方接口并实现负载均衡
  • Ansible的脚本-----playbook剧本【下】
  • Mac m1安装 MongoDB 7.0.12
  • 一款好看的某社区/空间/论坛/官方软件下载页源码
  • JDBC(Java访问数据库)
  • 【ESP01开发实例】-驱动OLED SSD1306显示屏
  • Web安全:Web体系架构存在的安全问题和解决方室
  • 视觉巡线小车(STM32+OpenMV)——总结
  • Dify中HTTP请求节点的常见操作
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Apache Zeppelin在Apache Trafodion上的可视化
  • JAVA之继承和多态
  • JS学习笔记——闭包
  • mysql_config not found
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 关于Java中分层中遇到的一些问题
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端知识点整理(待续)
  • 微信开放平台全网发布【失败】的几点排查方法
  • 云大使推广中的常见热门问题
  • 做一名精致的JavaScripter 01:JavaScript简介
  • No resource identifier found for attribute,RxJava之zip操作符
  • Spring Batch JSON 支持
  • 函数计算新功能-----支持C#函数
  • ​数据链路层——流量控制可靠传输机制 ​
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (vue)页面文件上传获取:action地址
  • (纯JS)图片裁剪
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (转)socket Aio demo
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ./configure、make、make install 命令
  • .net core docker部署教程和细节问题
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @RequestBody与@RequestParam:Spring MVC中的参数接收差异解析
  • [2]十道算法题【Java实现】
  • [20150707]外部表与rowid.txt
  • [2023-年度总结]凡是过往,皆为序章
  • [BJDCTF2020]EzPHP1
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [C++基础]-入门知识