如何在Django中接收文本框数组的提交值?
我有一组文本框,像这样:
<input type="text" value="" name="key[]" />
<input type="text" value="" name="key[]" />
<input type="text" value="" name="key[]" />
在Python中,可以这样获取提交的值:
keys = postDict['key[]']
但是,当我打印变量keys的值时,它只显示最后一个文本框的值。我该如何将提交的值接收为列表或数组呢?
问题
问题在于,当我点击一个叫MORE的按钮时,我把文本框添加到一个名为key的div中。表单没有提交运行时生成的文本框的值。
2 个回答
1
不要把这个字段叫做 key[]
。这是PHP里的写法。
用 request.POST.getlist('key')
来获取所有的值。
1
正如Daniel所说,你可以用request.POST.getlist('key')来获取所有的值。但是,从你的评论来看,似乎你想获取的数据字段名在所有元素中都是一样的,这样的话,.getlist()只会返回它能找到的最后一个值。(用.get()也是一样的情况。)
所以,Django确实收到了你想要的原始数据,但在你尝试用.get()获取时,因为字段名冲突,它把数据压缩了。
有没有什么原因让你不能给每个文本输入框使用不同的名字呢?如果没有的话,我建议你这样做,因为这样更合理。
另外,你的例子中有一些PHP的写法,让我觉得你对Django还比较陌生。如果是这样的话,可以看看这个很棒的Django表单库指南。