FastAPI 中的依赖注入数据模型

2023-12-05

我对 FastAPI 很陌生。我有一个请求,看起来像这样:

@router.post("/", response_model=EducationInResp)
async def create_Education_account(
        education_in: EducationCreation,
        current_user=Depends(get_current_user),
        has_perm=Depends(user_has_create_perms),
):

现在EducationCreation数据模型有一个名为customer_id。我想检查一下是否customer_id存在于数据库中。现在,我知道我可以在函数本身内手动执行此操作,并且不建议在中进行与数据库相关的验证Schema。有什么方法可以检查是否customer_id存在于数据库中使用dependencies?有没有这样的事情:

async def check_customer_exist(some_val):
    # some operation here to check and raise exception

@router.post("/", response_model=EducationInResp)
async def create_Education_account(
        education_in: EducationCreation = Depends(check_customer_exist),
        current_user=Depends(get_current_user),
        has_perm=Depends(user_has_create_perms),
):

您可以通过在依赖函数中声明参数来做到这一点,如文档。如果customer_id存在于数据库中,则将数据返回给路由。如果没有,您可以提出HTTPException,或根据需要进行处理。

from fastapi.exceptions import HTTPException
  
customer_ids = [1, 2, 3]

async def check_customer_exist(education_in: EducationCreation):
    if education_in.customer_id not in customer_ids:  # here, check if the customer id exists in the database. 
        raise HTTPException(status_code=404, detail="Customer ID not found")
    else:
        return education_in

@router.post("/", response_model=EducationInResp)
async def create_Education_account(
        education_in: EducationCreation = Depends(check_customer_exist),
        current_user=Depends(get_current_user),
        has_perm=Depends(user_has_create_perms),
):
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastAPI 中的依赖注入数据模型 的相关文章

随机推荐

  • 如何在 C# 中合并两个具有重复项的字典

    C 有没有办法合并两个字典 我有两个可能具有相同键的字典 但我正在寻找一种方法来合并它们 因此最终有一个带有一个键的字典 并且两个字典中的值被合并 我找到了以下代码 但它不处理重复项 Dictionary Mydictionary
  • css3关键帧动画不同部分的不同计时函数? (准确弹跳)

    这可能吗 我正在尝试重新创建一个掉落到屏幕上的球 并且我有一个如下动画 keyframes bounce 20 40 60 74 84 92 100 transform translate 0 0 0 transform translate
  • Android Activity 内变量的状态

    我在活动中定义了一个全局变量 该变量根据用户按下的按钮而变化 如果我走出应用程序 UI 并通过按住显示最近应用程序列表的主页按钮返回 则我的变量将保持其状态 但如果我通过按应用程序 aicon 再次运行我的应用程序 变量状态就会消失 有没有
  • 如何在Python-OpenCV中使用“cv2.inRange”检测两种不同的颜色?

    如何定义两种不同颜色的 下 和 上 范围 例如红色和蓝色 因为在 HSV 颜色中红色和蓝色并不相邻 这个属于红色 lower red np array 160 20 70 upper red np array 190 255 255 这个属
  • python模块导入中的继承与类实例

    如果这没有意义 我很抱歉 我不是一个经验丰富的程序员 考虑以下代码 import mymodule class MyClass def init self self classInstance myModule classInstance
  • 客户端 JavaScript 中多个 Firebase 连接的资源限制

    假设我想制作一款完全在浏览器中运行的大型实时 2D 开放世界风格游戏 并且我想使用 Firebase 来实现 我们也先把安全问题放在一边 我稍后会问这些 玩家从 0 0 开始 可以向任意方向移动 我对世界进行空间散列 以便任何给定的 x y
  • Bootstrap datetimepicker startDate 不会禁用过去的日期

    我使用 bootstrap datetimepicker 并且我想禁用过去的日子 但是startDate选项不起作用 var now new Date var tomorrow now getFullYear now getMonth 1
  • 如何发送跨域ajax请求[重复]

    这个问题在这里已经有答案了 我想发送跨域 ajax 请求 但我收到以下错误 我也尝试了以下代码 我从一篇堆栈文章中获得了是否可以发送跨域请求 我尝试过发送跨域请求的代码 document ready function ajax type P
  • Flask Admin - 如何根据用户角色设置 form_edit_rules 或 form_create_rules?

    我正在使用 Flask 和 sqlite 以及 SQLAlchemy 为中型组织制作简单的票务系统 对于数据的后端管理 我使用 Flask Admin 用户和票证表如下所示 class User db Model UserMixin id
  • 在 Swift 中使用 String 的 enumerateLines 函数

    The enumerateLinesSwift 的函数String类型声明如下 enumerateLines body line String inout stop Bool gt 据我了解 这个声明的意思是 enumerateLines是
  • 如何使用 JSF 2.0 和 EL 2.2 为 Tomcat 7 配置 Maven pom?

    我想用EL 2 2 for JSF 2应用 和tomcat 7配备 EL 2 2 我对以下内容感到困惑 1 我应该提供servlet api jsp api和EL in my pom文件 使用 Maven 为provided或者根本不将它们
  • Java 到 Jackson JSON 序列化:货币字段

    目前 我正在使用 Jackson 从基于 Spring 的 Web 应用程序发送 JSON 结果 我遇到的问题是尝试让所有货币字段输出两位小数 我无法使用解决这个问题setScale 2 因为像 25 50 这样的数字被截断为 25 5 等
  • jquery 验证和 ajax.beginform

    使用 JQuery Validate 插件时提交 Ajax Beginform 不会停止提交 有没有好的方法来确保 Ajax Beginform 不被提交 我还尝试使用 JQuery Forms 插件来 ajaxify 我的表单 这真是一种
  • 如何更改flutter中的日期和时间格式?

    你好吗 我的后端只接受这种格式的日期和时间 2019 03 24 11 00 00 我在我的应用程序日历小部件中使用来获取日期 并以这种格式打印日期 2019 04 24 12 00 00 000Z 我使用此代码来获取时间 TimeOfDa
  • 如何在 Perl 或批处理中合并两个 Excel (xls) 文件?

    我有两个文件可以说a xls and b xls 第一个包含 2 张 第二个包含 3 张 有人可以告诉我是否可以使用 Perl 或批处理脚本合并它们吗 我想要一份包含 5 张纸的输出XLS file 对于 Perl 解决方案使用电子表格 P
  • CSS:突出显示文本效果

    我试图用一些填充来产生突出显示的文本效果 但填充仅应用于开头和结尾 而不应用于新行 highlight background rgba 255 230 0 0 5 padding 3px 5px margin 3px 5px line he
  • ProGuard 仍然显示完整的活动名称

    我正在使用 Proguard 并在我的应用程序中使用此代码 System out println ACTIVITY NAME IS activity getLocalClassName 它在发布模式下打印出活动名称 我认为它应该混淆所有类名
  • torch.optim 对于多维张量返回“ValueError:无法优化非叶张量”

    我正在尝试优化场景顶点的平移torch optim adam 这是来自redner教程系列 在初始设置下效果很好 它尝试通过将所有顶点移动相同的值来优化场景 称为translation 这是原始代码 vertices for obj in
  • 启用 GtkFileChooserDialog 选择文件或文件夹

    使用 GTK Gtk文件选择对话框 我如何允许用户选择文件或文件夹 两者在这里都有效 这可用的行动是互斥的 不幸的是我认为这是不可能的 我在 Transmission 的 创建 torrent 对话框中尝试了一下 最后使用radibox 启
  • FastAPI 中的依赖注入数据模型

    我对 FastAPI 很陌生 我有一个请求 看起来像这样 router post response model EducationInResp async def create Education account education in