【发布时间】:2010-11-23 14:00:38
【问题描述】:
我有两个用 Django 编写的网站。我想要的是将内容从一个站点加载到另一个站点。我发现最好的选择是使用 .getJSON 和 JSON-P 但我不知道如何将这些东西(Django、jQuery 和 JSONP)放在一起.
更多经验丰富的用户有什么帮助吗?
编辑
我正在尝试实现一个持续的过程,即在每次网页浏览时将内容从一个站点加载到另一个站点 - 而不是单个转储/加载数据的东西。
【问题讨论】:
我有两个用 Django 编写的网站。我想要的是将内容从一个站点加载到另一个站点。我发现最好的选择是使用 .getJSON 和 JSON-P 但我不知道如何将这些东西(Django、jQuery 和 JSONP)放在一起.
更多经验丰富的用户有什么帮助吗?
编辑
我正在尝试实现一个持续的过程,即在每次网页浏览时将内容从一个站点加载到另一个站点 - 而不是单个转储/加载数据的东西。
【问题讨论】:
jQuery.ajax() 通过 JSONP 请求 json 数据。您只需要在选项中指定 dataType 为 'jsonp'。在服务器端,您只需要处理 jsonp 请求。例如,您可以使用django-jsonp 模块,它提供了在 django 中处理 jsonp 数据所需的几乎一切。
【讨论】:
要公开您的 JSONP 端点,请使用 django-rest-interface。
要从其他站点加载它,请使用Jquery's getJSON。
【讨论】:
最好的解决方案是将两个站点放在同一个数据库中。然后site2 可以简单地读取site1 的数据库。确实,site2可以包含site1的应用程序,使得site2包含了site1的所有功能。
如果由于某种原因,您无法让 site1 和 site2 共享一个公共数据库,那么 site2 必须通过 HTTP 请求从 site1 获取数据。
在 site2 应用程序中,您使用与 site1 相同的 urls.py。然而,site2 视图函数使用urllib2 向site1 发出HTTP GET 和POST 请求。一旦 site2 视图函数收到来自 site1 的响应,它就会简单地返回它。
您的 site2 应用程序可能看起来像这样。
def someSite2View( request ):
site1= urllib2.open( "http://site1/" + request.path )
data= site1.read()
# you have to parse the data to extract the headers
return Response( headers and data )
这出人意料地可行。这种转发在 HTTP 管道中经常发生。
【讨论】: