Django - 如何使用 JQuery Ajax 插入多个表单数据

Posted

技术标签:

【中文标题】Django - 如何使用 JQuery Ajax 插入多个表单数据【英文标题】:Django - How to Insert Multiple Form Data using JQuery Ajax 【发布时间】:2020-07-31 19:04:49 【问题描述】:

我想执行类似以下视频中描述的任务,

https://youtu.be/NoAdMtqtrTA?t=2156

在表中添加多行,然后将其全部插入到数据库中。

任何参考或任何示例代码都将非常重要。谢谢。

【问题讨论】:

【参考方案1】:

Javascript 代码为:

<script>
var data_dict = [];


// function called when Add row button is clicked
function Add_input_row()
  

    var input_row ='<tr id="input_row">\
                      <td><input id="input1"></td>\
                      <td><input id="input2"></td>\
                      <td><button onclick="save_row()">save</button></td>\
                    </tr>';

    var table_element = document.getElementById("data_table");

    //do nothing if input_row already exists
    if(document.getElementById("input_row")) 

        alert("input row already exists !");
    
    else 

        table_element.innerhtml = table_element.innerHTML + input_row;
    

  

// function called when Save button is clicked
function save_row()
  
     var field_val1 = document.getElementById("input1").value;
     var field_val2 = document.getElementById("input2").value;

     //unique id for each added data row needed when reading data directly from table
     var data_id = data_dict.length;

     //push the data to data dictionary

     data_dict.push(
        key:  data_id,
        value: [field_val1,field_val2]
    );

     var data_row ='<tr>\
                      <td id="data_field1'+data_id+'">'+field_val1+'</td>\
                       <td id="data_field2'+data_id+'">'+field_val2+'</td>\
                      <td></td>\
                    </tr>';

    // remove input row         
     document.getElementById("input_row").remove();
     //append data to table
     var table_element = document.getElementById("data_table");
     table_element.innerHTML = table_element.innerHTML + data_row;
  


  // send data to  django views

  function update_database() 

    var csrf_token = 'your_csrf_token';
    $.ajax(
          method: 'POST',
          url: 'update_database', // name of your djnago view
          data: "datatobeupdated":data_dict,"csrfmiddlewaretoken" : csrf_token,
          success: function (response) 

               //when executed succesfully empty the data_dict and table

               data_dict = [];
               var table_element = document.getElementById("data_table");
               table_element.innerHTML = "";

          ,
          error: function (response) 

                alert("Something Went Wrong");
          
      );

  

Html 表格是:

    <table>
        <thead>
            <tr><th title="Field #1">Field1</th>
            <th title="Field #2">Field2</th>
            </tr>
        </thead>
        <tbody id="data_table">

        </tbody>
    </table>

    <button onclick="Add_input_row()">Add row</button>

    <button onclick="Update()">Update</button>

您可以在 django 视图中访问数据,例如:

def update_database(request):
    if request.is_ajax():
       request_data = request.POST

       ## data dictionary received
       datatobeupdated = request_data['datatobeupdated']

【讨论】:

以上是关于Django - 如何使用 JQuery Ajax 插入多个表单数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Django 和 Jquery 实现 ajax?

如何使用 javascript/jquery/AJAX 调用 Django REST API?

如何在 Django 模板中使用 Jquery/Ajax 正确刷新 div

如何使用 jQuery ajax 实时搜索 Django 中的模型?

如何使用多个 Django FBV 通过 Ajax+jQuery 捕获和保存数据

如何使用 jquery 和 Ajax 将多个文件字段保存到 django