FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发

简介: FastAPI(七十二)实战开发《在线课程学习系统》接口开发-- 留言列表开发

   之前我们分享了FastAPI(七十一)实战开发《在线课程学习系统》接口开发-- 查看留言,这次我们分享留言列表开发。


   列表获取,也需要登录,根据登录用户来获取对应的留言。逻辑梳理如下。


1.判断用户是否登录
2.根据登录用户查询留言列表
3.留言列表中要根据是留言回复,进行列表重组


我们根据逻辑去梳理下对应的crud


def get_message_list(db: Session, userid: int):
    return db.query(Message).filter(or_(Message.senduser.id == userid, Message.acceptusers.id == userid,Message.status==0)).all()


我们根据逻辑去开发对应的代码。


@usersRouter.get(path="/messagelist")
async def messagelist(user: UsernameRole = Depends(get_cure_user),
                      db: Session = Depends(get_db)):
    users = get_user_username(db, user.username)
    messagelist = get_message_list(db=db, userid=users.id)
    message_list = []
    mainmessage = []
    if len(messagelist) > 0:
        for item in messagelist:
            if item.pid == "":
                messageone = MessageOne(id=item.id,
                                        senduser=get_user(db,item.senduser).username,
                                        acceptusers=get_user(db,item.acceptusers).username,
                                        read=item.read,
                                        sendtime=item.sendtime,
                                        addtime=str(item.addtime),
                                        context=item.context)
                mainmessage.append(messageone.id)
                all_pid = get_pid_message(db, item.id)
                if len(all_pid) > 0:
                    allpidlist = []
                    for items in all_pid:
                        message = MessagePid(id=item.id,
                                             senduser=get_user(db,items.senduser).username,
                                             acceptusers=get_user(db,items.acceptusers).username,
                                             read=items.read,
                                             sendtime=items.sendtime,
                                             addtime=str(items.addtime),
                                             context=items.context,
                                             pid=items.pid)
                        allpidlist.append(message)
                    messageone.pid = allpidlist
                message_list.append(messageone)
            else:
                if item.pid not in mainmessage:
                    message = get_message(db, item.pid)
                    if  message:
                        all_pid = get_pid_message(db, message.id)
                        messageone = MessageOne(id=message.id,
                                                senduser=get_user(db,message.senduser).username,
                                                acceptusers=get_user(db,message.acceptusers).username,
                                                read=message.read,
                                                sendtime=message.sendtime,
                                                addtime=str(message.addtime),
                                                context=message.context)
                        if len(all_pid) > 0:
                            allpidlist = []
                            for item in all_pid:
                                messagepid = MessagePid(id=message.id,
                                                        senduser=get_user(db,item.senduser).username,
                                                        acceptusers=get_user(db,item.acceptusers).username,
                                                        read=item.read,
                                                        sendtime=item.sendtime,
                                                        addtime=str(item.addtime),
                                                        context=item.context, pid=item.pid)
                                allpidlist.append(messagepid)
                            messageone.pid = allpidlist
                        message_list.append(messageone)
    return reponse(code=200, message='成功', data=jsonable_encoder(message_list))



相关文章
|
NoSQL Redis
使用slowapi对FastApi的接口进行限速
使用slowapi对FastApi的接口进行限速
2465 0
|
5月前
|
网络协议 Go
关于fastapi异步接口卡死的坑及解决
开发任务是使用fastapi去写一个对工业设备(PLC)的通信接口,方便其他后端服务与设备对接,将设备的功能抽象出来供MES调用。 通信协议是使用modbus TCP,由于fastapi是异步框架,很多以前在同步函数里开发的代码移植过来发现出现了异常,这也是不断踩坑的过程,问题解决之后也能体会到异步框架的优美与高效。
|
5月前
|
API Python
在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务
在线问诊 Python、FastAPI、Neo4j — 提供咨询接口服务
44 0
|
存储 IDE API
最佳实践:通过 FastAPI APIRouter 提升开发效率
FastAPI 是一个现代的、高性能的 Python Web 框架,它提供了 APIRouter 来帮助组织和管理路由。APIRouter 是一个可用于组织和分组路由的类,使得代码结构更加清晰和可维护。本文将介绍 FastAPI APIRouter 的用法,包括实践案例以及在 IDE 编辑器中的运行步骤。
|
8月前
|
JSON API 网络架构
FastAPI+React全栈开发13 FastAPI概述
FastAPI是一个高性能的Python Web框架,以其快速编码和代码清洁性著称,减少了开发者错误。它基于Starlette(一个ASGI框架)和Pydantic(用于数据验证)。Starlette提供了WebSocket支持、中间件等功能,而Pydantic利用Python类型提示在运行时进行数据验证。类型提示允许在编译时检查变量类型,提高开发效率。FastAPI通过Pydantic创建数据模型,确保数据结构的正确性。FastAPI还支持异步I/O,利用Python 3.6+的async/await关键词和ASGI,提高性能。此外,
265 0
|
JSON API 数据格式
使用(Python)FastAPI快速构建你的后端接口服务
使用(Python)FastAPI快速构建你的后端接口服务
1105 0
|
JSON 数据安全/隐私保护 数据格式
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
python fastapi 入门教程,每个案例都使用postman进行测试写的接口
|
网络安全 Windows
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
基于fastapi实现6个接口(token拦截, 2个业务流程,接口参数依赖校验)已经通过postman测试,记录部署服务器和windows,用于pytest接口自动化框架的接口测试对象
|
机器学习/深度学习 开发者 Python
FastAPI的小兄弟,开发命令行工具更给力
FastAPI的小兄弟,开发命令行工具更给力
256 0
FastAPI的小兄弟,开发命令行工具更给力
|
Python
FastAPI(11)- 函数参数类型是列表,但不使用 typing 中的 List,而使用 list,会怎么样?
FastAPI(11)- 函数参数类型是列表,但不使用 typing 中的 List,而使用 list,会怎么样?
236 0
FastAPI(11)- 函数参数类型是列表,但不使用 typing 中的 List,而使用 list,会怎么样?