我明白了
文件“C:\PythonProjects\myProject 外部\home.py”,第 39 行,在 @router.get("/home", response_class=HTMLResponse)
...
raise TypeError('{!r} 不是可调用对象'.format(obj)) 类型错误:
不是 可调用对象
home.py
from fastapi import Depends, APIRouter, Request
from fastapi.templating import Jinja2Templates
from sqlalchemy.orm import Session
from starlette.responses import HTMLResponse
from database import SessionLocal, engine
from models import Base
router = APIRouter()
templates = Jinja2Templates(directory="templates", autoescape=False)
Base.metadata.create_all(bind=engine)
def get_db():
try:
db = SessionLocal()
yield db
finally:
db.close()
@router.get("/home", response_class=HTMLResponse)
async def all_skills(request: Request, db: Session = Depends(get_db())):
all = db.query()
return templates.TemplateResponse("home.html", {"request": request, "show": all})
数据库.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQL_ALCHEMY_DATABASE_URL = "postgresql://postgres:password@localhost/DatabaseName"
engine = create_engine(SQL_ALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
主.py
from fastapi import FastAPI
import models
from database import engine
from routers import home
from starlette.staticfiles import StaticFiles
app = FastAPI()
models.Base.metadata.create_all(bind=engine)
app.mount("/static", StaticFiles(directory="static"), name="static")
app.include_router(home.router)
您不应该调用要用作依赖项的函数:
Depends(get_db)
而不是
Depends(get_db())