Python 3.4 Django'QueryDict'对象没有属性'iterkeys'

时间:2014-10-21 16:46:52

标签: django python-3.4

我正在尝试运行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)

1 个答案:

答案 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。