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

3 投票
5 回答
2851 浏览
提问于 2025-04-15 14:37

我想提交一个表单(用POST方式),这个表单会提交N个(数量不确定的)用户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 个回答

2

如果你在一个页面上提交很多相同的表单,你可能会觉得表单集合(Formsets)是你需要的东西。

你可以先为用户ID创建一个表单,然后在表单集合中重复这个表单。接着,你可以遍历这个表单集合来读取结果。

2

差不多了。POST参数其实是包含在请求中的一个叫做 QueryDict对象 里。

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

你应该了解一下 QueryDict 对象

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

撰写回答