Django将CommaSeparated值传递给GET参数

时间:2016-03-08 13:16:44

标签: django python-3.x

我们知道django有CommaSeperated模型字段。但是我们如何将commaSeparated字符串传递给Django GET参数。

每当我尝试传递类似下面的内容作为GET参数时:

1,2,3,4

我在django视图中使用以下代码

request.GET.get('productids','')

在django视图中最终如下所示。

'1,2,3,4' 

最终在数组周围添加引号。

请任何Django专家帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

您可以使用getlist

param_list = request.GET.getlist('productids')

如果您将其作为单个参数传递,则可以构建它

param_list = [int(x) for x in request.GET.get('productids', '').split(',')]

答案 1 :(得分:1)

Django将GET和POST参数转换为字符串(或unicode)。这意味着,如果您将列表(数组)作为GET参数发送,则最终会在后端获取一个字符串。

但是,您可以将字符串转换回数组。也许是这样的:

product_ids = request.GET.get('productids', '')
ids_array = list(product_ids.replace(',', '')) # remove comma, and make list

ids_array看起来像这样 - ['1', '2', '3']

<强>更新

值得注意的一点是ids_array中的ID是字符串,而不是整数(感谢Alasdair在下面的评论中指出了这一点)。如果您需要整数,请参阅answer by Sayse