如题,这是html界面,我想把这个表格中的数据给传递到后端进行处理
<form method="post" action="/sr/bi" name="table">
{% csrf_token %}
<table class="table table-bordered" id="zzz">
<thead>
<tr>
<th>R400th>
<th>R401th>
<th>R402th>
tr>
thead>
<tbody id="tb">
{% for item in obj %}
<tr>
<td>{{ item.r400 }}td>
<td>{{ item.r401 }}td>
<td>{{ item.r402 }}td>
tr>
{% endfor %}
tbody>
table>
<button type="submit" class="btn btn-primary" style="margin-left:15%;">提 交button>
form>
这是后端代码,我想接收到数据后先打印一下,结果得到的是 [ ] 空列表
def sb(request):
hhh = request.POST.getlist('table')
print(hhh)
return HttpResponse('???')
请问应该怎么办
你可以在前端代码中为每个表格单元格添加一个name属性,来标识它们的名称,然后在后端代码中使用request.POST.get()或request.POST.getlist()来获取表格数据。
例如,如果你想要从前端传递的表格中获取r400的值,你可以在前端代码中为r400单元格添加一个name属性,例如:
<td name="r400">{{ item.r400 }}</td>
然后在后端代码中,你可以使用request.POST.get()方法来获取表格中的r400值:
r400 = request.POST.get('r400')
print(r400)
如果你想要获取表格中所有的值,你可以在前端代码中为每个单元格添加一个name属性,例如:
<td name="r400">{{ item.r400 }}</td>
<td name="r401">{{ item.r401 }}</td>
<td name="r402">{{ item.r402 }}</td>
然后在后端代码中,你可以使用request.POST.getlist()方法来获取表格中的所有值:
r400 = request.POST.getlist('r400')
r401 = request.POST.getlist('r401')
r402 = request.POST.getlist('r402')
print(r400, r401, r402)
请注意,由于request.POST.getlist()方法返回的是一个列表,因此你需要在后续处理中对这些值进行遍历,才能获取它们的具体值。
希望这些信息能帮助你解决问题。
标签要加上name属性吧,form表单提交是将name属性对应的值提交。可以F12看看发送的网络请求中是否有传递参数。
输入控件有name才会提交到服务器,普通的dom控件是不会提交的。表单放一个hidden输入控件,js遍历表格得到tr对应的json对象数组,序列化为字符串赋值hidden,然后获取提交的值用json.loads反序列化为对象数组后进行相关操作
<form method="post" action="/sr/bi" name="table">
{% csrf_token %}
<table class="table table-bordered" id="zzz">
<thead>
<tr>
<th>R400</th>
<th>R401</th>
<th>R402</th>
</tr>
</thead>
<tbody id="tb">
{% for item in obj %}
<tr>
<td>{{ item.r400 }}</td>
<td>{{ item.r401 }}</td>
<td>{{ item.r402 }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<input type="hidden" name="jsondata" id="jsondata" />
<button type="submit" class="btn btn-primary" style="margin-left:15%;" onclick=" setData()">提 交</button>
</form>
<script>
function setData() {
let tb = document.getElementById('tb');
var rows = Array.from(tb.rows).map(i => ({ R400: i.cells[0].innerHTML, R401: i.cells[1].innerHTML, R402: i.cells[2].innerHTML }));
document.getElementById('jsondata').value = JSON.stringify(rows);
}
</script>
python
import json
def sb(request):
hhh = request.POST.get('jsondata','[]')###
hhh=json.loads(hhh)
print(hhh)
return HttpResponse('???')
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!