Django MultiValueDictKeyError它们何时发生以及如何避免它?

时间:2015-05-22 22:41:50

标签: python json django serializer

我在我的zoom.变量中的views.py中得到了一个MultiValueDictKeyError。当我删除缩放变量时,错误落在变量下面。所以我可以假设这只会跟随其他变量的套件。什么是MultiValueDictKeyError以及如何防止它们?

views.py

def getMarkers(request):
    query = request.GET 
    zoom = query.__getitem__('zoom')
    fromlat = query.__getitem__('fromlat')
    tolat = query.__getitem__('tolat')
    fromlng = query.__getitem__('fromlng')
    tolng = query.__getitem__('tolng')
    querystring = coordinate.objects.filter(lat__gt=fromlat) .filter(lat__lt = tolat).filter(lon__gt = fromlng).filter(lon__lt = tolng).filer(zoom_gt=zoom)
    data = serializers.serialize("json", coordinate.objects.all())
    return HttpResponse(data)

models.py

class coordinate(models.Model):
    name = models.CharField(max_length=30)
    lat = models.DecimalField(max_digits=10, decimal_places=7)
    lon = models.DecimalField(max_digits=10, decimal_places=7)
    zoom = models.IntegerField(default=15)

1 个答案:

答案 0 :(得分:1)

x.__getitem__(y) == x[y]

所以如果 y 不在 GET 响应中,python会引发 KeyError

使用 get()方法而非直接访问,它会返回(或由默认 kwarg设置的任何内容)而不是 KeyError异常

zoom = request.GET.get('zoom')

query = request.GET 
zoom = query.get('zoom')