You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aiohttp中如何获取HTML多选select标签的多个users参数?

解决Aiohttp中获取多选Select标签的所有选中值问题

在Aiohttp里,要获取多选select的所有选中项,不能直接通过data['users']取值——这种方式只会返回最后一个选中的条目。你需要使用FormData对象的getall()方法,它的作用和Django的getlist()类似,能返回所有匹配字段名的值组成的列表。

修改你的后端代码如下:

@login_required
async def post(self):
    data = await self.request.post()
    chat_topic = data.get('chat_topic', '').lower()
    # 使用getall获取所有选中的用户ID,第二个参数是默认值(空列表)
    users = data.getall('users', [])
    # 修正变量名,将group_users改为users
    await Chat.create(topic=chat_topic, users=users)

原理说明

当HTML表单中存在多个同名字段(比如多选select的选中项),Aiohttp的FormData会将这些值存储为列表。直接通过键索引(data['users'])只会返回列表的最后一个元素,而getall()方法会返回完整的选中值列表。

前端代码确认

你的HTML部分已经正确设置了multiple="multiple"属性,这部分不需要修改,它会确保表单提交时将所有选中的用户ID作为同名字段发送给后端。

内容的提问来源于stack exchange,提问作者Talgat Bektleuov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:25:22