我正在创建一个显示值和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
答案 0 :(得分:6)
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 的最后一个值,如果有更多为该成员/密钥提供一个以上的值。