Estoy tratando de escribir la vista que devolverá un GeoJSON de mi modelo almacenado en la base de datos. Me gustaría crear una API para poder utilizar una petición AJAX en un archivo JavaScript que tengo. No he sido capaz de encontrar cómo utilizar los serializadores GIS de Django REST Framework en mis vistas. Simplemente quiero crear una API que devuelva el GeoJSON para cargarlo en mi mapa de Leaflet.
Vistas.py
from django.shortcuts import render
from django.core.serializers import serialize
from .serializers import GeoJsonSerializer
from .models import UtmZones
# Create your views here.
def index(request):
context = {}
return render(request, 'proj_picker/proj.html', context)
def api_get_utm(request):
utm_poly = serialize('geojson', UtmZones.objects.all(), geometry_field='mpoly')
return JsonResponse(utm_poly, safe=False)
modelos.py
from django.contrib.gis.db import models
# Create your models here.
class UtmZones(models.Model):
swlon = models.CharField(max_length=254)
swlat = models.CharField(max_length=254)
hemisphere = models.CharField(max_length=3)
zone = models.CharField(max_length=5)
cm = models.CharField(max_length=5)
zone_hemi = models.CharField(max_length=5)
mpoly = models.MultiPolygonField()
def __str__(self):
return self.zone
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='proj'),
path('api/utm/', views.api_get_utm, name='utm'),
]