马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统"
梳理下思路
1.判断是否登录
2.课程是否存在
3.如果是复兴,查看复兴是否存在
4.是否有权限
5.发起品评
首先新增pydantic模型
- class CourseCommentModel(BaseModel):
- """发起评论参数"""
- id: int
- comment: 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 = user
- db.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)
复制代码 测试
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |