【问题标题】:How to send javascript list from template to request.POST (django framework)如何将javascript列表从模板发送到request.POST(django框架)
【发布时间】:2022-01-13 01:13:40
【问题描述】:

我有下面的 javascript,它得到了所有复选框,它运行良好。

<script>
                function addlist() {
                    var array = []
                    var checkboxes = document.querySelectorAll('input[type=checkbox]:checked')

                    for (var i = 0; i < checkboxes.length; i++) {
                        array.push(checkboxes[i].value);
                    }
                }
</script>

我想知道如何将列表array提交到views.py并通过request.POST['']

有什么建议吗?

【问题讨论】:

  • 你尝试过什么,你在哪里卡住了?
  • 我正在尝试将此列表存储在可以通过 view.py 中的 request.POST[''] 调用的位置,但我不知道该怎么做。在 HTML 中有一种方法可以用 name="" 来识别属性,但在 javascript 中,我如何在视图中进行此调用并使用此列表?
  • 这就是你想要做的appending array to FormData and send via AJAX?我不明白您为什么使用document.write 而不是使用fetch 或类似名称向服务器发送请求。在尝试 POST 数组之前,您不妨先设置 POSTing 非数组数据,然后找出将数组编码为表单数据的步骤。就目前而言,显示的代码都与 Django 或 AJAX 无关。
  • document.write 只是为了测试。我删除了它。
  • 我想知道是否有一种方法可以在 views.py 函数中识别列表数组,就像我对 HTML 元素所做的那样。例如:my_list = request.POST['array']

标签: javascript python django


【解决方案1】:

我通过以下方式解决了这个问题:

我创建了一个隐藏的输入来通过 javascript 接收列表:

    <script>
        function addlist() {
            var array = []
            var checkboxes = document.querySelectorAll('input[type=checkbox]:checked')

            for (var i = 0; i < checkboxes.length; i++) {
                array.push(checkboxes[i].value);
            }

            document.getElementById('precedent_list').value = array;
        }
    </script>


<input  type="hidden" style="outline-style: none;" id="precedent_list" name="precedent_list">

当点击提交按钮时我调用了javascript函数:

    <p class="w3-center" style="padding-top: 25px; padding-bottom: 25px">
          <button class="w3-round-xxlarge general_button" type="submit" onclick="addlist()">Salvar</button>
   </p>

在 views.py 中,我通过以下方式收到列表:

my_list = ''
my_list_= []
if 'precedent_list' in request.POST:
    my_list = request.POST['precedent_list']
my_list = my_list.replace(',',' ')
for j in my_list.split():
    my_list_.append(int(j))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2021-04-18
    • 2019-11-10
    • 1970-01-01
    • 2015-04-17
    • 2020-05-08
    • 2015-02-18
    相关资源
    最近更新 更多