django接收json传过来的数据为空

我的页面上方有一个表格

        <form method="post" id="rrrform">
            <table class="table table-bordered" id="myTable">
                <thead>
                <tr>
                    <th>R400th>
                    <th>R401th>
                tr>
                thead>
                <tbody>
                {% for item in obj %}
                <tr>
                    <td name="r400">{{ item.r400 }}td>
                    <td name="r401">{{ item.r401 }}td>
                tr>
                {% endfor %}
                tbody>
            table>
        form>

JS代码

/*******转存表格数据*******/
    $(function() {
    $('#btn3').click(function() {
        var json_obj = {
                 data:$('#rrrform').serialize()
                };    //JSON对象

        var json_str = JSON.stringify(json_obj);    //将JSON对象转变成JSON格式的字符串
        $.post("/kankan", json_str, callback, "json");
    })
})

/kankan路由对应的python后端函数
request.POST打印出来的结果为

@csrf_exempt
def kk(request):
    print(request.POST)
#中间省去无关代码
return render(request, 'sr_list7.html', context)

请问应该怎么办?有帮助必采纳!

得用类似<input> <checkbox><select>这类的控件。你的form表单里,没有任何的输入控件,肯定是什么也获取不到。

{% for item in obj %}
<tr>
  <td ><input type="text" name="r400" value="{{ item.r400 }}"></td>
  <td ><input type="text" name="r401" value="{{ item.r401 }}"></td>
</tr>
{% endfor %}


调试一下接受数据的代码看看哪里错误。

参考GPT和自己的思路:

根据代码的情况,可以看出问题在于使用了serialize()方法来将表单数据序列化成字符串,而使用此方法无法序列化JSON数据,因此需要使用另一种方法来处理JSON数据。可以使用jQuery的serializeArray()方法来将表单数据转化为JSON对象,然后再使用JSON.stringify()方法将其转化为JSON字符串。

修改JS代码如下:

$(function() {
    $('#btn3').click(function() {
        var data = {};
        var serializedData = $('#rrrform').serializeArray();

        $.each(serializedData, function() {
            data[this.name] = this.value;
        });

        var json_str = JSON.stringify(data);
        $.post("/kankan", json_str, callback, "json");
    })
})

同时,需要将HTML代码中的name属性修改为id属性:

<form method="post" id="rrrform">
    <table class="table table-bordered" id="myTable">
        <thead>
            <tr>
                <th>R400</th>
                <th>R401</th>
            </tr>
        </thead>
        <tbody>
            {% for item in obj %}
            <tr>
                <td id="r400">{{ item.r400 }}</td>
                <td id="r401">{{ item.r401 }}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>
</form>

这样修改后,再次提交数据,就可以在后端函数中通过request.POST获取到正确的数据了。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^