如何从 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 上接收它的主要内容,如果未能解决你的问题,请参考以下文章
序列化多个模型并在一个 json 响应中发送全部 django rest 框架