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

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

查询所有课程列表

逻辑就是返回所有课程,也很简单,直接上代码

复制代码
def get_all_courses(db: Session):
    """查询所有课程列表"""
    try:
        all_courses = get_all(db)
        to_client = []
        if all_courses:
            for _ in all_courses:
                course_detail = CourseDetail(
                    id=_.id,
                    name=_.name,
                    icon=_.icon,
                    desc=_.desc,
                    catalog=_.catalog,
                    onsale=_.onsale,
                    owner=get_by_uid(db, _.owner).username,
                    like_num=_.like_num
                )
                to_client.append(course_detail.dict())
    except:
        logger.warning(f"查询失败:{traceback.format_exc()}")
        return response(code=101701, message="查询失败")
    return response(data=to_client)

接口api

复制代码
@course_router.get("/student_course/all", summary="查询所有课程")
def get_all(db: Session = Depends(create_db)):
    return get_all_courses(db)

测试:

查询学生自己的课程列表

逻辑也比较简单

复制代码
def db_student_like(db: Session, user_id: int):
    """学生加入的所有课程"""
    return db.query(StudentCourse).filter(StudentCourse.student == user_id, StudentCourse.status == False).all()


def get_student_like(user: UsernameRole, db: Session):
    """查询学生加入的所有课程"""
    if user.role == "老师":
        return response(code=101701, message="只有学生可以查看自己加入的课程列表")
    try:
        db_user = get_by_username(db, user.username)
        student_likes = db_student_like(db, db_user.id)
        to_client = []
        if student_likes:
            for _ in student_likes:
                db_course = get_course_by_id(db, _.course)
                course_detail = CourseDetail(
                    id=db_course.id,
                    name=db_course.name,
                    icon=db_course.icon,
                    desc=db_course.desc,
                    catalog=db_course.catalog,
                    onsale=db_course.onsale,
                    owner=get_by_uid(db, db_course.owner).username,
                    like_num=db_course.like_num
                )
                to_client.append(course_detail.dict())
    except:
        logger.warning(f"method get_student_like error: {traceback.format_exc()}")
        return response(code=101702, message="查询失败")
    return response(data=to_client)

接口api

复制代码
@course_router.get("/student_course", summary="查询学生加入的所有课程")
def get_student_like_course(user: UsernameRole = Depends(get_current_user), db: Session = Depends(create_db)):
    return get_student_like(user, db)

测试

以上就是查询所有课程以及学生加入的课程接口

相关推荐
Mr.朱鹏3 小时前
【FastAPI 全栈实战 | 第2篇】Pydantic 数据校验与响应模型 —— 让 Bug 死在请求进来的那一刻
人工智能·python·fastapi
曲幽1 天前
Anki插件开发必知必会:钩子函数与右键菜单定制
python·fastapi·anki·menu·browser·addons
2501_942389551 天前
水平姿态的总装和测试
beautifulsoup·排序算法·散列表·fastapi·启发式算法·最小二乘法
喜欢的名字被抢了2 天前
FastAPI 取代 Flask 的底层逻辑:一场类型驱动的 API 架构革命
架构·flask·fastapi
开飞机的舒克_2 天前
FastAPI 实战入门:从路由、参数校验到依赖注入的后端开发指南
python·fastapi
L-影2 天前
FastAPI 静态文件:Web 页面的“固定展柜”与“加速引擎”
前端·fastapi
还是鼠鼠3 天前
AI掘金头条新闻系统 (Toutiao News)-缓存相关推荐新闻
后端·python·mysql·fastapi·web
ednO8nqdR3 天前
Python小游戏制作:如何实现可配置的跨分辨率界面布局
python·plotly·django·virtualenv·scikit-learn·fastapi·pygame
曲幽3 天前
从卡顿到丝滑:FastAPI 调用外部 API 的正确姿势(httpx 实战)
python·fastapi·web·async·httpx·client·await·requests·aiohttp
泡^泡3 天前
FastAPI基础入门
fastapi