2015-05-21 2 views
0

Я относительно новичок в Django. Я прочитал документацию, но мне все еще не удается заставить ее работать.Как использовать Django JSON и GeoJSON Serializer?

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

print(data) не будет работать. Вы должны сделать что-то вроде:

return HttpResponse(data) 

Затем перейдите по URL-адресу этого вида, и вы увидите результат.

Update

MultiValueDictKeyError возникает, если ключ, который вы пытаетесь получить доступ не в request.GET или request.POST.

Для предотвращения этой ошибки удостоверьтесь, что у вашего GET запроса есть zoom ключ. Для этого вам нужно будет написать URL в адресной строки что-то вроде этого:

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

Заменить val со значением для этого ключа.

+0

Im получает MultiValueDictKeyError at/getmarkers/для увеличения. Есть идеи, как с этим бороться? – Groovietunes

+0

@Groovietunes Я обновил свой ответ. – xyres

Смежные вопросы