3

我正在尝试使用 django rest 框架获取 GeoJSON 响应,但面临问题

argument of type 'NoneType' is not iterable

这是我的代码

class NewPark(models.Model):
    name = models.CharField(max_length=256)
    geometry = models.GeometryField(srid=3857, null=True, blank=True)
    objects = models.GeoManager()

    class Meta:
        db_table = u'new_park'

    def __unicode__(self):
        return '%s' % self.name


class NewParkSerializer(GeoFeatureModelSerializer):
    class Meta:
        model = NewPark
        geo_field = "geometry"
        fields = ('id', 'name', 'geometry')

class NewParkViewSet(viewsets.ModelViewSet):

    def get_queryset(self):

        queryset = NewPark.objects.all()
        return queryset

当我将序列化类型更改为“erializers.GeoModelSerializer”时,它正在工作,但我想要 GEOJSON 响应

我搜索了 GeoFeatureModelSerializer 但找不到任何示例geo_field = "geometry"。所有示例都是关于 geo_field = "point"

请帮我解决这个问题?

4

1 回答 1

3

您可能只有在可浏览 API 中出现上述错误,因为默认的 djanog-rest-framework html 模板渲染器不适用于 GeoJson 格式。

要测试是否是这种情况,请尝试以 json 格式调用您的 api 端点,即/api/newpark.json或等效地请求它/api/newpark?format=json。这应该向您显示 geojson 数据,如果它确实您的后端 API 很好,问题是可浏览的 html 表单。

如果您想要 GeoJson 端点的可浏览 API,那么您可能需要更改用于呈现 API 端点的 html 模板。

于 2014-03-21T18:04:02.290 回答