【问题标题】:Get all value from multiple form with same field name without formset从具有相同字段名称的多个表单中获取所有值而不使用表单集
【发布时间】:2019-05-20 08:49:04
【问题描述】:

如何在没有formset的情况下从多个具有相同字段名称的表单中获取所有值?

这是我的 view.py 文件

...
test = str(request.POST.getlist('testing123[]'))
...

还有html文件

<div class="input-group">
  <input type="text" class="form-control" name="testing123[]">
    <a href="javascript:void(0);" class="add_button_rip btn btn-warning" title="Add field">+</a>
</div>

用js脚本克隆表单

<script type="text/javascript">
  $(document).ready(function(){
      var maxField = 100; //Input fields increment limitation
      var addButton = $('.add_button_rip'); //Add button selector
      var wrapper = $('.field_wrapper_rip'); //Input field wrapper
      var fieldHTML = '<div class="spacer-divide"></div><div class="input-group"><input type="text" class="form-control" name="test"><a href="javascript:void(0);" class="remove_button_rip btn btn-warning" title="Add field">-</a></div>'; //New input field html 
      var x = 1; //Initial field counter is 1

      //Once add button is clicked
      $(addButton).click(function(){
          //Check maximum number of input fields
          if(x < maxField){ 
              x++; //Increment field counter
              $(wrapper).append(fieldHTML); //Add field html
          }
      });

      //Once remove button is clicked
      $(wrapper).on('click', '.remove_button_rip', function(e){
          e.preventDefault();
          $(this).parent('div').remove(); //Remove field html
          x--; //Decrement field counter
      });
  });
  </script>

我试着用这个打印

print (test)
for x in range(len(test)):
  print (test[x],end=" ")

结果只是第一个值

对不起我的错误我在这一行有错误的代码

var fieldHTML = '<div class="spacer-divide"></div><div class="input-group"><input type="text" class="form-control" name="test"><a href="javascript:void(0);" class="remove_button_rip btn btn-warning" title="Add field">-</a></div>';

应该是

var fieldHTML = '<div class="spacer-divide"></div><div class="input-group"><input type="text" class="form-control" name="testing123[]"><a href="javascript:void(0);" class="remove_button_rip btn btn-warning" title="Add field">-</a></div>';

【问题讨论】:

  • 首先,如果您想要项目列表,为什么要尝试将它们转换为 str ?
  • 因为我需要字符串输出
  • 好的,但请看我的回答。 Django 的 .getlist() 方法应该返回 python 的列表。您可以遍历此列表,然后将单个项目转换为字符串。

标签: python django


【解决方案1】:
test = request.POST.getlist('testing123[]')
print(test) # first check if test contains multiple elements and then start iteration over it
for t in  test:
    print(t) # you can cast it as a string now, print(str(t)). this return single element.

【讨论】:

  • 我不知道,但是当我打印它时只是第一个值
  • 这个案例给了我们关于 QueryDict、print(request.POST) 的信息以及给我们关于 testing123[] 键的信息。它看起来怎么样?
猜你喜欢
  • 2016-09-28
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 2011-02-04
  • 2018-10-05
  • 2023-03-25
  • 2020-03-30
相关资源
最近更新 更多