无锡网站公司,网站服务器租用售价,网站内容授权书,市场调研ppt源码见#xff1a;fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统
上次我们分享了#xff0c;FastAPI#xff08;七十四#xff09;实战开发《在线课程学习系统》接口开发-- 删除留言
从本篇文章开始#xff0c;… 源码见fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统
上次我们分享了FastAPI七十四实战开发《在线课程学习系统》接口开发-- 删除留言
从本篇文章开始我们分享课程相关的api
还是按照惯例梳理下对应的逻辑 1.判断用户是否登录 2.校验是否有权限 3.校验参数是否完整本步骤我们使用pydantic自校验 4.查询课程是否存在 5.创建课程 课程我们也需要单独创建一个新的路由来管理
我们在routers创建course.py
from fastapi import APIRoutercourse_router APIRouter()
接着我们在main.py中引入并注册给app
from routers.course import course_routerapp.include_router(course_router, prefix/course, tags[courses])这样我们的新路由就生效了
接下来我们看下如何实现创建课程
首先创建课程的pydantic参数类同样的我们新建一个course_schema.py来单独管理
from pydantic import BaseModel, Field
from typing import Optionalfrom common.constant import ShelfEnumclass Courses(BaseModel):name: str Field(min_length2, max_length50)icon: Optional[str] Nonedesc: Optional[str] Nonecatalog: Optional[str] Noneonsale: Optional[SaleEnum] Noneowner: Optional[int] Nonelike_num: Optional[int] 0
其中 SaleEnum 如下
class SaleEnum(int, Enum):ZERO 0ONE 1
接下来我们创建 course_method.py在这里我们实现有关课程的所有逻辑 -*- encodingutf-8 -*-
Time: 2024/7/25 09:53
Author: lc
Email: 15101006331163.com
File: course_method.pyfrom sqlalchemy.orm import Sessionfrom common.json_tools import response
from methods.user_method import get_by_username
from models.course_schema import Courses
from models.models import Course
from models.user_schema import UsernameRole
from common.log import loggerdef get_course_by_name(db: Session, name: str):根据名称获取课程return db.query(Course).filter(Course.name name, Course.status False).first()def create_course(db: Session, course: Courses, user: UsernameRole):创建课程user_role user.roleif not user_role or user_role 学生:return response(code101004, message只有老师才可以创建课程)db_course get_course_by_name(db, course.name)if db_course:return response(code101002, message该课程名称已存在不允许重复)try:db_user get_by_username(db, user.username)course.owner db_user.idcourse Course(**course.dict())db.add(course)db.commit()db.refresh(course)except:logger.warning(f创建课程{course.name} 失败)return response(code101001, message创建课程失败)logger.info(f创建课程{course.name} 成功)return response()最后我们在新建course.py在其中实现接口api -*- encodingutf-8 -*-
Time: 2024/7/25 09:37
Author: lc
Email: 15101006331163.com
File: course.pyfrom fastapi import APIRouter, Depends
from sqlalchemy.orm import Sessionfrom methods.course_method import create_course
from middlewares.mysql.database import create_db
from models.course_schema import Courses
from models.user_schema import UsernameRole
from methods.user_method import get_current_usercourse_router APIRouter()course_router.post(/, summary创建课程)
def create(course: Courses, db: Session Depends(create_db), user: UsernameRole Depends(get_current_user)):return create_course(db, course, user)测试 以上就是创建课程的逻辑