如何使用循环显示querydict

时间:2014-01-17 14:35:08

标签: python django

我正在创建一个显示值和querydict键的函数。例如,如果我在GET请求上获得了QueryDict。

<QueryDict: {u'val1':[u'aa'],u'val2':[u'ab'],u'val3':[u'ac'],u'val4':[u'ad'], ... u'valn':[u'an'] ...}>

我的功能现在就像这样:

def displayQueryDicts(self, request):
    for x in request:
     print x # this will return the val1, val2, val3, val4, ..., valn
     print x .value() # I don't know how to print all the values

我现在的问题是,如何打印这些值..

val1   aa
val2   ab
val3   ac
val4   ad
...    ...
valn   an

4 个答案:

答案 0 :(得分:6)

根据documentation

  

HttpRequest.GET

     

包含所有给定HTTP GET参数的类字典对象。

你可以像普通的python dict一样迭代它:

for key, value in request.GET.iteritems():
    print "%s %s" % (key, value)

希望有所帮助。

答案 1 :(得分:2)

在python3中你会做

 for key, value in request.GET.items():
        print ("%s %s" % (key, value))

答案 2 :(得分:1)

请注意,QueryDict只是一个类似字典的对象。有一个重要的区别。来自docs

  

在HttpRequest对象中,GET和POST属性是django.http.QueryDict的实例,这是一个类似字典的类,用于处理同一个键的多个值。这是必要的,因为一些HTML表单元素,特别是为同一个键传递多个值。

如果要迭代请求的所有参数并使多个具有相同的密钥,则需要在Python 3中使用QueryDict.lists()或在Python 2中使用QueryDict.iterlists()。请参阅{的文档{3}}。

答案 3 :(得分:1)

对于 Python 3.x:

您可以使用 QueryDict 的 QueryDict.lists() [Django-doc] 方法。 它包括字典中每个成员/键的所有值,作为一个列表。

for key, value in QueryDict(query_string).lists():
    ...

for key, value in request.GET.lists():
    ...

for key, value in request.POST.lists():
    ...

注意:这与 QueryDict.items() [Django-doc] 不同,后者返回给定 member/key 的最后一个值,如果有更多为该成员/密钥提供一个以上的值。