from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates from datetime import datetime from models.ammeter_usage import AmmeterUsageModel app = FastAPI() templates = Jinja2Templates(directory="templates") app.mount("/static", StaticFiles(directory="static"), name="static") # 添加模板过滤器:时间戳转日期显示 def format_datetime(value): try: return datetime.fromtimestamp(value / 1000).strftime("%Y-%m-%d %H:%M") except: return value # 🔥关键:为 Jinja2 添加过滤器 templates.env.filters["datetime"] = format_datetime @app.get("/", response_class=HTMLResponse) async def index(request: Request): data = await AmmeterUsageModel.get_recent(6462, days=30) return templates.TemplateResponse( "index.html", {"request": request, "room_id": 6462, "data": data}, )