Django MultiValueDictKeyError 什么时候发生,如何避免?
Django MultiValueDictKeyError what is it when do they occur and how can it be avoided?
我的缩放变量 views.py 中出现 MultiValueDictKeyError。当我删除 zoom 变量时,错误落在它下面的变量上。所以我可以假设这将仅适用于其余变量。什么是 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)
x.__getitem__(y) == x[y]
所以如果 y 不在 GET 响应中 python 引发 KeyError
使用 get() 方法而不是直接访问,它 returns None (或任何你由 default kwarg 设置)而不是 KeyError
zoom = request.GET.get('zoom')
或
query = request.GET
zoom = query.get('zoom')
我的缩放变量 views.py 中出现 MultiValueDictKeyError。当我删除 zoom 变量时,错误落在它下面的变量上。所以我可以假设这将仅适用于其余变量。什么是 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)
x.__getitem__(y) == x[y]
所以如果 y 不在 GET 响应中 python 引发 KeyError
使用 get() 方法而不是直接访问,它 returns None (或任何你由 default kwarg 设置)而不是 KeyError
zoom = request.GET.get('zoom')
或
query = request.GET
zoom = query.get('zoom')