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
相关产品推荐
相关产品推荐

