欢迎光临
我们一直在努力

AI掘金头条新闻系统 (Toutiao News)-获取用户信息

1. schemas/users.py

# 更新用户信息的模型类
class UserUpdateRequest(BaseModel):
nickname: str = None
avatar: str = None
gender: str = None
bio: str = None
phone: str = None

2. crud/users.py

# 更新用户信息:update更新 -> 检查是否命中 -> 获取更新后的用户返回
async def update_user(db: AsyncSession, username: str, user_data: UserUpdateRequest):
# update(User).where(User.username == username).values(字段=值,字段=值)
# user_data 是一个 Pydantic 类型,得到字典 -> ** 解包
# 没有设置值的不更新
query = update(User).where(User.username == username).values(**user_data.model_dump(
exclude_unset=True,
exclude_none=True
))

result = await db.execute(query)
await db.commit()

# 检查更新
if result.rowcount == 0:
raise HTTPException(status_code=404, detail="用户不存在")

# 获取一下更新后的用户
updated_user = await get_user_by_username(db, username)
return updated_user

3. routers/users.py

# 修改用户信息:验证Token -> 更新(用户输入数据 put提交 -> 请求体参数 -> 定义Pydantic模型类) -> 响应结果
# 参数:用户输入的 + 验证Token的 + db(调用更新的方法)
@router.put("/update")
async def update_user_info(
user_data: UserUpdateRequest,
user: User = Depends(get_current_user),
db: AsyncSession = Depends(get_db)
):
user = await users.update_user(db, user.username, user_data)
return success_response(
message="更新用户信息成功",
data=UserInfoResponse.model_validate(user)
)

赞(0)
未经允许不得转载:171主机测评 » AI掘金头条新闻系统 (Toutiao News)-获取用户信息
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址