Files
student_manage_system/main.py
2026-09-22 08:21:35 +08:00

58 lines
1.5 KiB
Python

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from contextlib import asynccontextmanager
from database import engine, SessionLocal
from models import Base
from routers import teachers, classes, students, scores, employment, stats
from seed import init_db, seed_data
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup: create tables and seed data
Base.metadata.create_all(bind=engine)
db = SessionLocal()
try:
seed_data(db)
finally:
db.close()
yield
app = FastAPI(
title="学生管理系统 API",
description="基于 FastAPI 的学生管理系统,支持学生、班级、老师、成绩、就业管理",
version="1.0.0",
lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Serve static frontend
app.mount("/static", StaticFiles(directory="static"), name="static")
@app.get("/")
async def index():
return FileResponse("static/index.html")
app.include_router(teachers.router)
app.include_router(classes.router)
app.include_router(students.router)
app.include_router(scores.router)
app.include_router(employment.router)
app.include_router(stats.router)
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)