我正在使用列表类型视图(购物车)的网站上工作,其中每个项目都有一个选择下拉窗口小部件来更改传送类型。生成的HTML由for循环创建,使得'item_id_foo'在每个循环中发生变化,如下所示:
<select name='item_id_foo'>
<option value='bar1'>bar1</option>
...
<input type='submit' name='submit' value='Change'/>
</select>
因此,request.POST.copy有一个键/值,如{'item_id_foo':'bar1'}。我的问题是如何找到看起来像'item_id_foo','item_id_bar'等的键。像“getitem”,“get”或“contains”这样的方法假设你知道完整键的样子,我只知道模式。如何匹配键上的图案?
谢谢你, bkev
更新:选择的示例值如下: 'item_id_1','item_id_2','item_id_3'...匹配购物车中需要编辑的商品的ID(每种都有自己的送货方式和费用)。
答案 0 :(得分:1)
为什么不遍历整个列表然后对每个项目的名称进行正则表达式? QueryDict.lists()
或QueryDict.values()
允许您获取所有内容,然后循环播放。
<强> QueryDict.lists()强> 与items()类似,除了它包含字典的每个成员的所有值,作为列表。
例如:
>>> q = QueryDict('a=1&a=2&a=3')
>>> q.lists()
[(u'a', [u'1', u'2', u'3'])]
链接:http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.QueryDict
答案 1 :(得分:1)
只需迭代按键并保留你想要的那些
>>> post = {'item_id_1': 1, 'item_id_2': 2, 'item_id_3': 3, 'noitem': 0}
>>> dict([(k, v) for k, v in post.items() if k[:8] == 'item_id_'])
{'item_id_3': 3, 'item_id_2': 2, 'item_id_1': 1}