手把手一起开发一个FastApi 的后台管理系统

1,491 阅读2分钟

#前言

#一、项目初始化

1. pycharm 创建项目 fastapi_admin
2. 安装依赖
3. 进入项目,初始化项目目录
# 控制层
mkdir -p admin/controller
# 服务层
mkdir -p admin/service
# 数据操作层
mkdir -p admin/dao
# 模型
mkdir -p admin/models
# 配置文件,日志,中间件等
mkdir config
mkdir logs
mkdir middlewares
mkdir utils

#二、app初始化

新增server.py

from fastapi import FastAPI
from admin.controller.login import login_router
from admin.controller.role import role_router
from admin.controller.user import user_router
from loguru import logger
from contextlib import asynccontextmanager
from config.database import Base


# 异步上下文管理器管理生命周期事件仅对主应用程序生效
@asynccontextmanager
async def lifespan(app: FastAPI):
    logger.info("app开始启动")

    # todo! 注册数据库

    logger.info("app启动成功")
    yield
    # todo! 释放资源
    logger.info("app关闭成功")


app = FastAPI(lifespan=lifespan)

router_list = [
    {'router': login_router, 'tags': ['登录路由']},
    {'router': user_router, 'tags': ['用户路由']},
    {'router': role_router, 'tags': ['角色路由']},

]

for router in router_list:
    # 使用 app.include_router(),我们可以将每个 APIRouter 添加到主 FastAPI 应用程序中
    app.include_router(router=router.get('router'), tags=router.get('tags'))

新增app.py

import uvicorn
from server import app
if __name__ == '__main__':
    uvicorn.run(
        app='app:app',
        host='127.0.0.1',
        port=8080,
    )

新增admin/controller/login.py

from fastapi import APIRouter

# 分组路由
login_router = APIRouter()

新增admin/controller/role.py

from fastapi import APIRouter

# 分组路由
role_router = APIRouter()

新增admin/controller/user.py

from fastapi import APIRouter

# 分组路由
user_router = APIRouter()

数据库初始化

新增config/database.py,连接配置修改成自己的

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = "mysql+pymysql://{user}:{password}@{host}/{database}".format(user='root',
                                                                                       password='sicheng43', 
                                                                                       host='127.0.0.1',
                                                                                       database='fastapiadmin')
# SQLALCHEMY_DATABASE_URL = "postgresql://user:password@postgresserver/db"

engine = create_engine(
    SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False},
    echo=True
)
# 每个实例SessionLocal都会是一个数据库会话
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# 通过类继承,来创建每个数据库模型或类(ORM 模型)
Base = declarative_base()

完结

直接运行app.py 文件,可以发现项目已经成功启动了。本章内容都是以项目搭建初始化为主,后面章节会开始编写接口代码