![](/img/trans.png)
[英]pydantic.error_wrappers.ValidationError: 1 validation error for '' with FastAPI
[英]pydantic.error_wrappers.ValidationError: FastAPI
我在 fastapi 中創建一個 crud 我有一個用戶 model,我創建了另一個名為 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
function 的返回值是問題所在。 不要返回{"User": user}
,而是嘗試只返回user
object ,如下所示:
@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_id
值匹配的User
object,則會發生相同的錯誤。 而不是返回{"Error": "User not found"}
,處理這種非常常見的情況的最佳方法是引發帶有404
狀態代碼和錯誤消息的HTTPException
:
@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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.