相关疑难解决方法(0)

FastAPI - Pydantic - 值错误引发内部服务器错误

我正在将 FastAPI 与 Pydantic 结合使用。

我的问题 - 我需要使用 Pydantic 引发 ValueError

from fastapi import FastAPI
from pydantic import BaseModel, validator
from fastapi import Depends, HTTPException

app = FastAPI()

class RankInput(BaseModel):

    rank: int

    @validator('rank')
    def check_if_value_in_range(cls, v):
        """
        check if input rank is within range
        """
        if not 0 < v < 1000001:

            raise ValueError("Rank Value Must be within range (0,1000000)")
            #raise HTTPException(status_code=400, detail="Rank Value Error") - this works But I am looking for a solution using ValueError
        return v

def …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pydantic fastapi

17
推荐指数
2
解决办法
3万
查看次数

如何使用 FastAPI 在 Pydantic 字段中设置范围和超出范围的值?

所以我有以下代码行:

item: Optional[int] = Field(None, ge=1, le=168)
Run Code Online (Sandbox Code Playgroud)

我也希望有可能设定-1价值。因此,我需要排除零值,但我想允许一个值和来自to-1的值。1168

有什么办法可以做到这一点吗?

python range pydantic fastapi

7
推荐指数
1
解决办法
2万
查看次数

如何验证pydantic模型的多个领域

我想验证pydantic模型的三个模型字段。为此,我正在从 pydantic 导入 root_validator。低于错误。我在https://pydantic-docs.helpmanual.io/usage/validators/#root-validators 中找到了这个。任何人都可以帮助我。找出下面的错误。from pydantic import BaseModel, ValidationError, root_validator Traceback (最近一次调用): File "", line 1, in ImportError: cannot import name 'root_validator' from 'pydantic' (C:\Users\Lenovo\AppData\Local\Programs\ Python\Python38-32\lib\site-packages\pydantic__init__.py)

我试过

@validator
def validate_all(cls,v,values,**kwargs):
Run Code Online (Sandbox Code Playgroud)

我从一些常见的字段父模型继承了我的 pydantic 模型。仅显示父类字段的值,但不显示我的子类字段。例如

class Parent(BaseModel):
    name: str
    comments: str
class Customer(Parent):
    address: str
    phone: str

    @validator
    def validate_all(cls,v,values, **kwargs):
         #here values showing only (name and comment) but not address and phone.
Run Code Online (Sandbox Code Playgroud)

python validation pydantic

5
推荐指数
4
解决办法
5768
查看次数

如何在FastAPI中自定义错误响应?

我有以下 FastAPI 后端:

from fastapi import FastAPI

app = FastAPI

class Demo(BaseModel):
    content: str = None
    
@app.post("/demo")
async def demoFunc(d:Demo):
    return d.content
Run Code Online (Sandbox Code Playgroud)

问题是,当我向此 API 发送带有额外数据的请求时,例如:

data = {"content":"some text here"}aaaa
Run Code Online (Sandbox Code Playgroud)

或者

data = {"content":"some text here"aaaaaa}

resp = requests.post(url, json=data)
Run Code Online (Sandbox Code Playgroud)

422 unprocessable entity在以下情况下,它会抛出状态代码错误,返回字段中包含 Actual("some text here") 和 Extra("aaaaa") 数据data = {"content":"some text here"}aaaa

{
  "detail": [
    {
      "loc": [
        "body",
        47
      ],
      "msg": "Extra data: line 4 column 2 (char 47)",
      "type": "value_error.jsondecode",
      "ctx": {
        "msg": "Extra …
Run Code Online (Sandbox Code Playgroud)

python json pydantic fastapi

4
推荐指数
1
解决办法
8721
查看次数

如何使用 FastAPI 返回自定义 404 Not Found 页面?

我正在为 Discord 制作一个 rick roll 网站,我想重定向到404响应状态代码的 rick roll 页面。

我尝试了以下方法,但没有成功:

 @app.exception_handler(fastapi.HTTPException)
 async def http_exception_handler(request, exc):
     ...
Run Code Online (Sandbox Code Playgroud)

python exception http-status-code-404 starlette fastapi

4
推荐指数
1
解决办法
7753
查看次数

如何在 FastAPI 中使用 Pydantic 模型定义查询参数?

我试图有一个像这样的端点/services?status=New

status将是 New或者Old

这是我的代码:

from fastapi import APIRouter, Depends
from pydantic import BaseModel
from enum import Enum

router = APIRouter()

class ServiceStatusEnum(str, Enum):
    new = "New"
    old = "Old"


class ServiceStatusQueryParam(BaseModel):
    status: ServiceStatusEnum


@router.get("/services")
def get_services(
  status: ServiceStatusQueryParam = Query(..., title="Services", description="my desc"),
):
    pass #my code for handling this route.....
Run Code Online (Sandbox Code Playgroud)

结果是我收到一个似乎与此问题相关的错误

错误说AssertionError: Param: status can only be a request body, using Body()


然后我找到了这里解释的另一个解决方案。

所以,我的代码将是这样的:

from fastapi import APIRouter, Depends
from pydantic …
Run Code Online (Sandbox Code Playgroud)

python openapi pydantic fastapi

4
推荐指数
1
解决办法
6123
查看次数