gpt4 book ai didi

FastAPI运行时错误: Use params or add_pagination

转载 作者:行者123 更新时间:2023-12-03 07:59:58 33 4
gpt4 key购买 nike

我正在 FastAPI 上编写我的第二个项目。我收到了这个错误。例如,我的 routers.users.py 中有以下代码:

@router.get('/', response_model=Page[Users])
async def get_all_users(db: Session = Depends(get_db)):
return paginate(db.query(models.User).order_by(models.User.id))

而且它有效。它在 swagger 文档中有字段 limit 和 page 。我尝试为 routers.recipes.py 编写相同的内容,但在这种情况下,我没有 swagger 中的分页(限制,页面)字段。好吧,我用谷歌搜索并发现添加依赖项可以帮助我。现在我在swagger中看到分页参数,但错误仍然是相同的。

路由器食谱:

@router.get('/', response_model=Page[PostRecipes], dependencies=[Depends(Params)])
async def get_all_recipes(db: Session = Depends(get_db)):
return paginate(db.query(models.Recipe).order_by(models.Recipe.id))

分页:

class Params(BaseModel, AbstractParams):
page: int = Query(1, ge=1, description="Page number")
limit: int = Query(50, ge=1, le=100, description="Page size")

def to_raw_params(self) -> RawParams:
return RawParams(
limit=self.limit,
offset=self.limit * (self.page - 1),
)


class Page(BasePage[T], Generic[T]):
page: conint(ge=1) # type: ignore
limit: conint(ge=1) # type: ignore

__params_type__ = Params

@classmethod
def create(
cls,
items: Sequence[T],
total: int,
params: AbstractParams,
) -> Page[T]:
if not isinstance(params, Params):
raise ValueError("Page should be used with Params")

return cls(
total=total,
items=items,
page=params.page,
limit=params.limit,
)


__all__ = [
"Params",
"Page",
]

那么,有人对此有什么想法吗?

最佳答案

根据doc您必须指定默认参数,您的代码应类似于 paginate(iterable, params)

关于FastAPI运行时错误: Use params or add_pagination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74654845/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com