Files
student_manage_system/main.py
T

58 lines
1.5 KiB
Python
Raw Normal View History

2026-09-21 06:58:01 +08:00
from fastapi import FastAPI
2026-09-22 08:21:35 +08:00
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from contextlib import asynccontextmanager
2026-09-21 06:58:01 +08:00
2026-09-22 08:21:35 +08:00
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")
2026-09-21 06:58:01 +08:00
@app.get("/")
2026-09-22 08:21:35 +08:00
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)
2026-09-19 18:16:15 +08:00
if __name__ == "__main__":
2026-09-22 08:21:35 +08:00
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)