问题:responseModel 被忽略。 FastApi (python 3.8)
Problem: responseModel being ignored. FastApi (python 3.8)
我正在使用 FastApi,我的 responseModel 被忽略了。我试图在响应中不 return 密码字段。为什么 FastApi 会忽略我的响应模型定义?
这是我的 api post 方法:
@app.post("/users")
def create_users(user: schemas.UserCreate, db: Session = Depends(get_db), response_model=schemas.UserOut):
new_user = models.User(**user.dict())
print(new_user)
db.add(new_user)
db.commit()
db.refresh(new_user)
return new_user
这里是 postman return 我不应该看到密码字段:
{
"password": "sdmfsladfj",
"email": "hon99@gmail.com",
"created_at": "2022-02-05T00:17:11.010020-06:00",
"id": 10
}
这是我的 schemas.py 文件中的 responseModel 定义:
class UserOut(BaseModel):
id: int
email: EmailStr
created_at: datetime
class Config:
orm_mode = True
anyio==3.5.0
asgiref==3.5.0
click==8.0.3
dnspython==2.2.0
email-validator==1.1.3
emailvalidator==0.3
fastapi==0.73.0
greenlet==1.1.2
h11==0.13.0
idna==3.3
psycopg2-binary==2.9.3
pydantic==1.9.0
sniffio==1.2.0
SQLAlchemy==1.4.31
sqlalchemy2-stubs==0.0.2a19
sqlmodel==0.0.6
starlette==0.17.1
typing_extensions==4.0.1
utcnow==0.3.0
uvicorn==0.17.1
response_model
是视图装饰器的参数(因为它是关于视图本身的元数据),而不是视图 function 的参数(它接受如何处理视图):
@app.post("/users", response_model=schemas.UserOut):
async def ...
我正在使用 FastApi,我的 responseModel 被忽略了。我试图在响应中不 return 密码字段。为什么 FastApi 会忽略我的响应模型定义?
这是我的 api post 方法:
@app.post("/users")
def create_users(user: schemas.UserCreate, db: Session = Depends(get_db), response_model=schemas.UserOut):
new_user = models.User(**user.dict())
print(new_user)
db.add(new_user)
db.commit()
db.refresh(new_user)
return new_user
这里是 postman return 我不应该看到密码字段:
{
"password": "sdmfsladfj",
"email": "hon99@gmail.com",
"created_at": "2022-02-05T00:17:11.010020-06:00",
"id": 10
}
这是我的 schemas.py 文件中的 responseModel 定义:
class UserOut(BaseModel):
id: int
email: EmailStr
created_at: datetime
class Config:
orm_mode = True
anyio==3.5.0
asgiref==3.5.0
click==8.0.3
dnspython==2.2.0
email-validator==1.1.3
emailvalidator==0.3
fastapi==0.73.0
greenlet==1.1.2
h11==0.13.0
idna==3.3
psycopg2-binary==2.9.3
pydantic==1.9.0
sniffio==1.2.0
SQLAlchemy==1.4.31
sqlalchemy2-stubs==0.0.2a19
sqlmodel==0.0.6
starlette==0.17.1
typing_extensions==4.0.1
utcnow==0.3.0
uvicorn==0.17.1
response_model
是视图装饰器的参数(因为它是关于视图本身的元数据),而不是视图 function 的参数(它接受如何处理视图):
@app.post("/users", response_model=schemas.UserOut):
async def ...