Django视图可以接收列表作为参数吗?

时间:2009-09-26 22:56:51

标签: python django django-views

我想提交一份表格(通过POST)提交N(未知)user_id。 我可以将视图作为列表接收这些ID吗?

例如

def getids(request,list):

   for id in list:
       usr = User.objects.get(pk=id);
       //do something with it.
       usr.save()

for id in request.POST['id']:
甚至可能吗?

我正在寻找最好的接受方式。

5 个答案:

答案 0 :(得分:5)

您应该阅读QueryDict objects

>>> q = QueryDict('a=1&a=2&a=3')
>>> q.lists()
[('a', ['1', '2', '3'])]

答案 1 :(得分:2)

非常接近。 POST参数实际上包含在请求中的QueryDict object中。

def getids(request):
    if request.method == 'POST':
        for field in HttpRequest.POST:
            // Logic here

答案 2 :(得分:2)

如果您在一个页面中提交大量相同的表单,您可能会发现Formsets是您想要的。

然后,您可以为userid创建一个Form,然后在Formset中重复它。然后,您可以遍历formset以读取结果。

答案 3 :(得分:0)

您可以使用稍后可以过滤的前缀创建表单字段。

假设您使用名称为uid-1,uid-2,... uid-n

的表单字段

然后,当您处理POST时,您可以执行以下操作:

uids = [POST[x] for x in POST.keys() if x[:3] == 'uid']

这将为您提供POST中以“uid”开头的字段值。

答案 4 :(得分:0)

QueryDict的{​​{3}}正是您要找的。

来自文档:

>>> q = QueryDict('a=1', mutable=True)
>>> q.update({'a': '2'})
>>> q.getlist('a')
['1', '2']