Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:查找以相同单词开头的参数数量_Python_Django_Request - Fatal编程技术网

Python Django:查找以相同单词开头的参数数量

Python Django:查找以相同单词开头的参数数量,python,django,request,Python,Django,Request,在我的Django应用程序的views.py中,我想编写一个函数来查找请求中以“item”开头的可选参数的数量 def get_items(request): 注意:传递到此函数的请求可能包含以“item”开头的各种可选参数,其数字如下:&item1=、&item2=、&item3=…等,以及其他不以“item”开头的可选参数 因此,请求可以类似于以下任何一种: /myapp/data/&item1=foo&item2=bar&item3=baz&otherPa

在我的Django应用程序的views.py中,我想编写一个函数来查找请求中以“item”开头的可选参数的数量

def get_items(request):
注意:传递到此函数的请求可能包含以“item”开头的各种可选参数,其数字如下:&item1=、&item2=、&item3=…等,以及其他不以“item”开头的可选参数

因此,请求可以类似于以下任何一种:

/myapp/data/&item1=foo&item2=bar&item3=baz&otherParam=other
/myapp/data/&item1=baa&otherParam=other
/myapp/data/&item1=bla&item2=baa&otherParam=other
我知道我可以做到以下几点(但这需要我提前知道“项目”的数量):


有没有办法找出“item”可选参数的数量?(因此,在上面的第一个请求中有3个,第二个请求中有1个,第三个请求中有2个)

您可以使用
len(request.GET)
查找
请求中的键值对计数。GET
对象。

QueryDict响应所有常用的dict方法,因此,您可以直接迭代键-将其与列表理解相结合,并在其上调用
len

len(k for k in request.GET if k.startswith('item'))
或者,如果您确实需要匹配的值,请结合dict理解使用

items = {k: v for k, v in request.GET.items() if k.startswith('item')}
注意,您还没有展示前端是如何生成这些值的,但您可能不想首先这样做。QueryDict每个键可以有多个值,因此您可以在同一
项中发送所有数据
参数:

/myapp/data/?item=foo&item=bar&item=baz&otherParam=other

现在,您只需执行
request.GET.getlist('item')
即可获取
['foo'、'bar'、'baz']

我刚刚更新了我的问题。我忘了提到还有其他可选的参数,这些参数并不是从帮助读者理解你的答案开始的,考虑包括你的代码的简短描述以及它是如何解决问题的。
len([value for key, value in request.GET.items() if 'item' in key.lower()])
len([value for key, value in request.GET.items() if 'item' in key.lower()])