如何在Django中接收文本框数组的提交值?

0 投票
2 回答
1486 浏览
提问于 2025-04-16 19:49

我有一组文本框,像这样:

<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表单库指南

撰写回答