如何使用 Django JSON 和 GeoJSON 序列化器?
How to use Django JSON and GeoJSON 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?它没有抛出错误,但我知道它不起作用,因为除了请求
之外,没有任何内容被打印到服务器终端
print(data)
将不起作用。您必须执行以下操作:
return HttpResponse(data)
然后访问该视图的 URL,您将看到结果。
更新
如果您尝试访问的密钥不在 request.GET
或 request.POST
. 中,则会出现 MultiValueDictKeyError
为防止此错误,请确保您的 GET
请求具有 zoom
键。为此,您需要在地址栏中这样写 URL:
/getmarkers/?zoom=val&formlat=val&somekey=val
将 val
替换为该键的值。
我对 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?它没有抛出错误,但我知道它不起作用,因为除了请求
之外,没有任何内容被打印到服务器终端print(data)
将不起作用。您必须执行以下操作:
return HttpResponse(data)
然后访问该视图的 URL,您将看到结果。
更新
如果您尝试访问的密钥不在request.GET
或 request.POST
. 中,则会出现 MultiValueDictKeyError
为防止此错误,请确保您的 GET
请求具有 zoom
键。为此,您需要在地址栏中这样写 URL:
/getmarkers/?zoom=val&formlat=val&somekey=val
将 val
替换为该键的值。