0

我的网站上有一个表单,允许用户向对象添加名称。用户可以点击加号按钮添加另一个名称或点击减号按钮删除一个名称。我需要能够轻松提取所有以名称开头的 POST 变量。

例如。一个用户添加了两个名字,所以我们有两个文本框名称“name0”和“name1”。有没有办法可以在不知道我有多少的情况下提取这两个值?

我想在不知道的情况下这样做的一个原因是因为他们可以在名称列表上执行任意数量的添加和删除功能。所以我可以这样结束:

'name2'、'name10'、'name11'

对于进来的名字。我不想知道确切的值。我只想提取所有以“名称”开头的 POST 变量。

这可能吗?

4

2 回答 2

0

您可以遍历所有 POST 元素并保留以“名称”开头的元素:

names = [v for k, v in request.POST.items() if k.startswith('name')]

但这确实是错误的做法。您根本不应该将您的字段称为不同的名称:只需将所有字段都命名为'name'. HTTP 愉快地将所有数据作为同一变量的不同元素发布,您可以通过request.POST.getlist('name').

于 2013-04-20T22:11:55.420 回答
0

是的,就像丹尼尔说的,所以我添加了下一个

posted = [{k.replace('person__',''):v} for k, v in request.POST.items() if k.startswith('person__')]

然后我可以使用带有发布数据的模型表单

于 2015-10-07T02:03:30.543 回答