Django中点击el-table行后无法获取对应行值的问题求助
解决Django后端无法接收el-table行点击POST数据的问题
核心问题是前端点击表格行时,没有把该行的数据传递给后端,导致medicineRequestSelect函数里拿到的都是None。下面是具体的排查和解决步骤:
问题原因
你的前端handle方法中,发起POST请求时仅创建了空的URLSearchParams对象,没有添加任何参数,相当于发送了一个空请求,后端自然无法获取到数据:
// 原代码:未携带row数据 axios.post(ToDJ('medicineRequestSelect'), new URLSearchParams()).then(...)
解决方案
修改前端的handle方法,将点击行的row数据中需要的字段添加到请求参数中,后端就能正常获取值了。
修改后的前端handle方法
// 行点击处理函数 handle(row, event, column) { console.log(row, event, column) // 构造请求参数,把row中的关键字段添加进去 const params = new URLSearchParams(); params.append('id', row.id); params.append('order_id', row.order_id); params.append('ward_number', row.ward_number); axios.post(ToDJ('medicineRequestSelect'), params).then(res => { if (res.data.code === 0) { console.log(res.data.data) // 注意:原代码中this.list = res.data.data会覆盖现有表格数据,若不需要请删除这行 let index = this.list.findIndex(item => item.id === row.id) if (index === -1) { this.$refs.multipleTable.toggleRowSelection(row, true); this.list.push(row) } else { this.$refs.multipleTable.toggleRowSelection(row, false); this.list.splice(index, 1) } } else { this.NotifyFail(res.data.data) } }) },
后端代码无需修改
你的view_doctor.py逻辑是正确的,只要前端传递了参数,request.POST.get()就能正常获取值:
@api_view(['GET',"POST"]) def medicineRequestSelect(request): id = request.POST.get('id') order_id = request.POST.get('order_id') ward_number = request.POST.get('ward_number') print("Values: ", id, order_id, ward_number) return Action.success()
额外提示
- 如果
row中的字段可能为空,建议添加非空判断,避免传递undefined:
if (row.id) params.append('id', row.id);
- 若想传递整个
row对象,也可以用JSON格式发送请求,此时后端需要通过request.data获取数据:- 前端修改:
axios.post(ToDJ('medicineRequestSelect'), row) - 后端修改:
id = request.data.get('id')
- 前端修改:
相关截图说明
- 截图1:后端控制台输出
Values: None None None,说明请求未携带参数 - 截图2:el-table正常渲染出数据,说明前端已正确获取到列表数据,仅传递环节出问题
内容的提问来源于stack exchange,提问作者Jolin
相关产品推荐
相关产品推荐

