如何使用带有 JSONP 的 django 从我的其他网站加载内容?

Posted

技术标签:

【中文标题】如何使用带有 JSONP 的 django 从我的其他网站加载内容?【英文标题】:How can I use django with JSONP to load content from my other website? 【发布时间】:2010-11-23 14:00:38 【问题描述】:

我有两个用 Django 编写的网站。我想要的是将内容从一个站点加载到另一个站点。我发现最好的选择是使用 .getJSONJSON-P 但我不知道如何将这些东西(Django、jQuery 和 JSONP)放在一起.

更多经验丰富的用户有什么帮助吗?

编辑

我正在尝试实现一个持续的过程,即在每次网页浏览时将内容从一个站点加载到另一个站点 - 而不是单个转储/加载数据的东西。

【问题讨论】:

【参考方案1】:

jQuery.ajax() 通过 JSONP 请求 json 数据。您只需要在选项中指定 dataType 为 'jsonp'。在服务器端,您只需要处理 jsonp 请求。例如,您可以使用django-jsonp 模块,它提供了在 django 中处理 jsonp 数据所需的几乎一切。

【讨论】:

【参考方案2】:

要公开您的 JSONP 端点,请使用 django-rest-interface。

要从其他站点加载它,请使用Jquery's getJSON。

【讨论】:

【参考方案3】:

最好的解决方案是将两个站点放在同一个数据库中。然后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 管道中经常发生。

【讨论】:

我想你误解了我一点。我想加载“实时”内容,因为项目#1 中的视图提供的数据正在发生变化,我需要它也显示在项目#2 中。不是单一的操作——而是更多的持续过程

以上是关于如何使用带有 JSONP 的 django 从我的其他网站加载内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 jsonp 与 angular-ui 日历一起使用

如何从我的 Django 模板中调用 Dajax / Dajaxice 函数

如何从我的带注释的 Django 查询中过滤/排除非活动评论?

Django - ModelChoiceField 查询集如何工作?

使用带有 JSONP 的 AJAX 未捕获的 SyntaxError 和 CORS 错误

Django/AngularJS:如何从我的 AngularJS 脚本访问我的 Python 上下文项