我有两个用 Django 编写的网站。我想要的是将内容从一个站点加载到另一个站点。我发现最好的选择是使用.getJSON和JSON-P,但我不知道如何将这些东西(Django、jQuery 和 JSONP)放在一起。
有更多经验丰富的用户提供帮助吗?
编辑
我正在尝试实现一个持续的过程,即在每次页面浏览时将内容从一个站点加载到另一个站点 - 而不是单个转储/加载数据的东西。
要公开您的 JSONP 端点,请使用django-rest-interface。
要从其他站点加载它,请使用Jquery 的 getJSON。
最好的解决方案是将两个站点放在同一个数据库中。然后site2 可以简单地读取site1 的数据库。确实,site2 可以包含site1 应用程序,使得site2 包含了site1 的所有功能。
如果由于某种原因,您无法让 site1 和 site2 共享一个公共数据库,那么 site2 必须通过 HTTP 请求从 site1 获取数据。
在 site2 应用程序中,您使用与urls.py
site1 相同的方法。但是,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 管道中经常发生。
jQuery.ajax()通过 JSONP 请求 json 数据。您只需要在选项中指定 dataType 为 'jsonp'。在服务器端,您只需要处理 jsonp 请求。例如,您可以使用django-jsonp模块,它几乎提供了在 django 中处理 jsonp 数据所需的一切。