pydantic.error_wrappers.ValidationError:FastAPI

2023-12-07

我正在 fastapi 中进行增删改查,我有一个用户模型,并且创建了另一个名为 showuser 的模型,以仅显示查询中的某些特定字段,但是当我执行请求时,出现错误。

我只是希望我的请求显示我在 showuser 中拥有的字段。

我的模式

from pydantic import BaseModel
from typing import Optional
from datetime import datetime

# Create a User model
# Create a class for the user


class User(BaseModel):
    username: str
    password: str
    name: str
    lastname: str
    address: Optional[str] = None
    telephone: Optional[int] = None
    email: str
    creation_user: datetime = datetime.now()

# Create UserId model
# Create a class for the UserId
class UserId(BaseModel):
    id: int

# Create a ShowUser model
# Create a class for the ShowUser
class ShowUser(BaseModel):
    username: str
    name: str
    lastname: str
    email: str
    class Config():
        orm_mode = True

这是我实现 api 的用户代码

@router.get('/{user_id}', response_model=ShowUser)
def get_user(user_id: int, db: Session = Depends(get_db)):
    user = db.query(models.User).filter(models.User.id == user_id).first()
    if not user:
        return {"Error": "User not found"}
    return {"User": user}

终端消息

pydantic.error_wrappers.ValidationError: 4 validation errors for ShowUser 
response -> username
  field required (type-value_error.missing)
response -> name
  field required (type=value_error.missing) 
response -> lastname
  field required (type=value_error.missing) 
response -> email
  field required (type=value_error.missing)

我认为你的返回值get_user功能是问题。而不是返回{"User": user},尝试仅返回user对象如下图所示:

@router.get('/{user_id}', response_model=ShowUser)
def get_user(user_id: int, db: Session = Depends(get_db)):
    user = db.query(models.User).filter(models.User.id == user_id).first()
    if not user:
        return {"Error": "User not found"}
    return user

编辑:如果数据库不包含,则会发生相同的错误User与值匹配的对象user_id。而不是返回{"Error": "User not found"},处理这种非常常见的情况的最佳方法是提出HTTPException with a 404状态码和错误信息:

@router.get('/{user_id}', response_model=ShowUser)
def get_user(user_id: int, db: Session = Depends(get_db)):
    user = db.query(models.User).filter(models.User.id == user_id).first()
    if not user:
        raise HTTPException(
            status_code=int(HTTPStatus.NOT_FOUND),
            detail=f"No user exists with user.id = {user_id}"
        )
    return user
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pydantic.error_wrappers.ValidationError:FastAPI 的相关文章

随机推荐

  • 当我尝试从中调用 Java 方法时,Matlab 锁定 jar 文件

    我正在用 Java 开发一个库 需要在 Matlab 中使用它 Java 和 Matlab 代码都在不断开发中 因此 每当我重建 Java 代码并创建新的 jar 文件时 我都需要在 Matlab 代码中重新加载它并在那里使用新的 jar
  • 何时使用 function() 、 function 或 () => function(callback)

    我一直在寻找一个好的解释 所以对我来说一切都很清楚 例子
  • 带动态分配的 MPI 矩阵乘法:段。过错

    我正在 OpenMP 中制作矩阵乘法程序 但收到以下错误消息 Mecha Liberta 12337 Process received signal Mecha Liberta 12337 Signal Segmentation fault
  • 如何使用 ABPeoplePicker 获取电子邮件?

    我没有发现苹果的文档对于实际使用人员选择器获取数据非常有帮助 并且互联网上似乎没有太多其他信息 我认为我需要在此功能中获取电子邮件 BOOL peoplePickerNavigationController ABPeoplePickerNa
  • 32 位模式下的 NASM x86_64 汇编:为什么该指令会生成 RIP 相对寻址代码?

    bits 32 global start section data str hello db HelloWorld 0xa str hello length db str hello section text start mov ebx 1
  • 不使用中间文件将内存中的数据传输到FTP服务器

    我有一些用 PHP 编码的 JSON 数据json encode 它看起来像这样 site site1 nbrSicEnt 85 我想要做的是将数据作为文件直接写入 FTP 服务器上 出于安全原因 我不希望在将文件发送到 FTP 服务器之前
  • Rubymine 6.0.2,无法调试

    在我新安装的 OSX Mavericks 上 我想尝试一下 Rubymine 但无法让调试器工作 尽管我设法使用 IntelliJ 和 ruby 插件在 Windows 7 上让它工作 这是我所做的 XCode 和命令行工具已安装 home
  • jberet 上的独立示例 (jsr352)

    是否有使用 jberet 作为独立模块来执行批处理作业 一直在获取与 WildFly 一起使用的样本 惊讶地发现它在尝试一些示例时寻找容器来加载实现 任何关于为什么 为什么不的见解都会有帮助 以下是如何在独立应用程序中使用 jberet 的
  • 根据模式连接线

    我有以下文件 test 1 My 2 Hi 3 我需要一种使用 cat grep 或 awk 给出以下输出的方法 test1 My2 Hi3 我如何通过单个命令实现此目的 就像是 cat file txt grep awk 请注意 在原始文
  • Python - 从 SharePoint 网站下载文件

    我需要将文件下载并上传到 Sharepoint 站点 这必须使用 python 来完成 我的网站将是https ourOrganizationName sharepoint com Followed通过进一步的链接 最初我以为我可以使用 R
  • 从 Spring+Mongo 中的文档数组中删除项目

    我在 mongodb 中有一个这样的文档集合 id ObjectId 592bc37c339e7a23788b4c7c trips tripGcsId 5937f86e339e7a2a58ac3186 tripCounter NumberL
  • 当模块存在时,为什么 VS Code 会抛出“找不到模块 'typescript'.ts(2307)”?

    我在用着import as ts from typescript 在 ts 文件中导入打字稿 该文件运行良好 但 VS Code 告诉我Cannot find module typescript ts 2307 有什么办法可以抑制这个问题吗
  • JavaScript 中奇怪的意外标记非法 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我有一个无法解决的语法错误 根据 W3 jQuery
  • 检查 SQL Server 实例是否在本地计算机上?

    我想确定我连接的 SQL Server 是否在本地计算机上 我知道连接到 SQL Server 时有很多方法可以识别 SQL Server 的服务器 实例名称 但是指定服务器名称的方法有很多不同 我不想自己在 IP 地址之间进行比较 机器名
  • JS/jQuery 在滚动事件上交换图像

    我有一个网站菜单 其工作原理与此类似 http jsfiddle net sinky XYGRW 在 stackoverflow 上发现 我的问题是 设计师希望将导航 主页按钮 中的徽标切换为较小的图标 不仅仅是缩小尺寸 而且实际上改变了图
  • 为什么像 chrome://downloads 或 chrome://apps 这样的本地 chrome-url 在无头模式下不起作用?

    我正在尝试访问 chrome 本地网址 但这不起作用 headless chrome 支持本地 URL 吗 我今天正在寻找这个 发现这个 大多数 chrome 内部页面不是在无头模式下实现的 这是 headless Chrome 本身的限制
  • 避免空引用异常

    显然 代码中的绝大多数错误都是空引用异常 是否有任何通用技术可以避免遇到空引用错误 除非我弄错了 否则我知道在 F 等语言中不可能有空值 但这不是问题 我问的是如何避免 C 等语言中的空引用错误 当向用户显示空引用异常时 这表明由于开发人员
  • 使用javascript动态启用和禁用css文件?

    我对 JavaScript 很陌生 我正在创建一个多语言网站 它包含 rtl 和 ltr 语言 我有两个用于语言的 css 当用户更改语言时 我想加载相应的 css 文件 这样可以吗 如果没有建议任何替代方法 可以使用 javascript
  • NSFetchedResultsController swift 部分

    我有一个表视图 它从具有 3 个字段的 CoreData 实体获取数据 firstName String lastName String 和 did NSNumber 这是一个可以打开或关闭的 UISwitch 我想用名字和姓氏填充表 但第
  • pydantic.error_wrappers.ValidationError:FastAPI

    我正在 fastapi 中进行增删改查 我有一个用户模型 并且创建了另一个名为 showuser 的模型 以仅显示查询中的某些特定字段 但是当我执行请求时 出现错误 我只是希望我的请求显示我在 showuser 中拥有的字段 我的模式 fr