Django GET键作为映射列表

时间:2012-02-20 17:19:19

标签: python django

我有一个相对简单的问题,但我还没找到最合适的解决方案。

我有一个表单,它将几个用户可选择的值作为Get变量传递。其中大多数是BooleanChoice字段,可以选择或不选择。我想要的是一种简洁的方法来收集列表中的所有GET键(如果不是空的),并将它们映射到表格标题的更易读的形式。

例如,如果我的get变量如下:

?site=1&&startdate=1988-09-09&enddate=1989-09-09&mean_air_temp=True&q=table&submit=Query

我想制作一个这样的清单:

['site', 'startdate', 'endate', 'man_air_temp', ...,]

然后结束:

['Site Name', 'Start Date', 'End Date', 'Mean Air Temp', ...,]

然后可以将我的数据与模板中的表格标题相关联。

我知道有很多方法可以做到这一点,但想知道是否有一种简洁,pythonic的方式来获得我想要的结果。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:4)

GET参数作为request.GET中的类字典对象提供给视图。所以,你只需要另一本字典就可以将键映射到你想要的标题:

header_mapping = {
    'site': 'Site Name',
    'startdate': 'Start Date'.
    ....
}
headers = [header_mapping[k] for k, v in request.GET.items() if v]

列表推导只是映射GET querydict中的(键,值)对列表,如果值不为空,它会查找标题映射并将其添加到列表中。