我正在尝试运行POST字典,但出于某种原因,当我使用python 3.4而不是python 2.7运行我的代码时,我遇到了'QueryDict' object has no attribute 'iterkeys'
错误。这是我正在运行的代码:
def printKeys(request):
for a in sorted(request.POST.iterkeys()):
print(a)
答案 0 :(得分:12)
我假设QueryDict
是内置dict
的子类。词典在python 3.x上没有.iterkeys
(.itervalues
或.iteritems
)。方法.keys
,.values
,.items
直接返回基础字典的可迭代视图,而不是构建(可能)昂贵的列表。
如果你想构建一个列表,你必须明确地做:
keys = list(request.POST.keys())
或者更简洁,您可以将dict传递给list
,因为字典在键上默认迭代。
keys = list(request.POST)
但是,您可以直接在iterable上调用sorted,所以这很好:
sorted_keys = sorted(request.POST)
您的功能可以改写为:
def print_keys(request):
print('\n'.join(sorted(request.POST)))
这应该适用于python 2.7和3.4。