如何从 django 视图发送 json 并在 HTML 上接收它

Posted

技术标签:

【中文标题】如何从 django 视图发送 json 并在 HTML 上接收它【英文标题】:How to send json from django view and receive it on HTML 【发布时间】:2012-08-19 08:01:25 【问题描述】:

我正在使用 GeoDjango 进行 GIS 项目,为此我必须使用 OpenLayers 渲染地图。我的 sn-p 接受 JSON 在 OpenLayers 中创建图层。我想将 GeoDjango 的“管理”模型作为 JSON 发送到我的 html 页面,并在 HTML 上接收它作为 JSON 以呈现我的地图。

请就如何在 OpenLayers 地图中渲染我的 GeoDjango 模型提出另一个建议。

我的管理模式:

class UPAdministrative(models.Model):
    name=models.CharField(max_length=51)
    admin_leve=models.CharField(max_length=5)   
    ls=models.LineStringField()
    objects=models.GeoManager()

    def __unicode__(self):
        return self.name

【问题讨论】:

【参考方案1】:

我认为你必须在你的模型中实现 CRUD 并在 html 中使用它。为了显示地理对象,我只使用了 django 管理页面。 要编写 CRUD,请参阅

tastypie

Django REST framework

【讨论】:

未维护;但也许仍然有用:GeoDjango Piston -- Piston 的地理格式发射器。【参考方案2】:

您可以在视图中将模型序列化为 OpenLayers 支持的格式。例如,此视图仅将几何图形作为 geojson 发送:

from django.http import HttpResponse
from models import UPAdministrative

def upadministrative_geometry_json(request, upadmin_id):
    up_admin = UPAdministrative.objects.get(pk=upadmin_id)
    geojson = up_admin.ls.geojson
    return HttpResponse(geojson, mimetype='application/json')

问题Rendering spatial data of GeoQuerySet in a custom view on GeoDjango 有一个更详细的示例,说明如何将数据与 OpenLayers 集成。

【讨论】:

以上是关于如何从 django 视图发送 json 并在 HTML 上接收它的主要内容,如果未能解决你的问题,请参考以下文章

Django - Ajax 注册

如何在Django中接收JSON格式的数据

序列化多个模型并在一个 json 响应中发送全部 django rest 框架

将 Django 视图中的数据作为 JSON 对象传递给 vue 实例

无法从 Django 发送 HttpResponse

如何将数据从回调传递到Django中的另一个视图?