AI掘金头条新闻系统 (Toutiao News)-更新用户信息
1.schemas/users.py# 更新用户信息的模型类 class UserUpdateRequest(BaseModel): nickname: str None avatar: str None gender: str None bio: str None phone: str None2.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_unsetTrue, exclude_noneTrue )) result await db.execute(query) await db.commit() # 检查更新 if result.rowcount 0: raise HTTPException(status_code404, detail用户不存在) # 获取一下更新后的用户 updated_user await get_user_by_username(db, username) return updated_user3.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更新用户信息成功, dataUserInfoResponse.model_validate(user) )