如何使用Django JSON和GeoJSON Serializer?

时间:2015-05-21 02:43:56

标签: python json django serializer

我对Django比较新。我已经阅读了文档,但我仍然无法使用它。

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)
    data = serialize('geojson', querystring,
          geometry_field='point',
          fields=('name',))

    print(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)
    latlng = [lat, lon]
    zoom = models.IntegerField(default=15)

    def __str__(self):
        return self.name

我如何使用searlizer?它没有抛出错误,但我知道它没有工作,因为除了请求之外没有任何东西被打印到服务器终端

1 个答案:

答案 0 :(得分:1)

print(data)无效。你必须做类似的事情:

return HttpResponse(data)

然后访问该视图的网址,您将看到结果。

<强>更新

如果您尝试访问的密钥不在MultiValueDictKeyErrorrequest.GET中,则会出现

request.POST

要防止此错误,请确保您的GET请求具有zoom密钥。为此,您需要在地址栏中写下以下内容的URL:

/getmarkers/?zoom=val&formlat=val&somekey=val

val替换为该键的值。