【问题标题】:Client JS + Django Rest Framework客户端 JS + Django Rest 框架
【发布时间】:2013-10-10 19:58:41
【问题描述】:

看完这篇关于分离服务器和客户端的文章,Separate REST JSON API server and client? 我想知道Django中是否也存在这个问题。

在 Django 中,这两种现象是分开的吗?

  1. Django 是 MVC。取出视图,将 django 作为后端,然后发送 JSON。创建一个单独的说 Emberjs 或 Angularjs 应用程序。让这些客户端访问后端的 REST 资源。在这种情况下,如何将项目放在一起部署到 Heroku?您可以将“JAVASCRIPT-HEAVY-CLIENT”部署到 Heroku,然后让它与您的 REST 服务器通信吗?

  2. 既然django是MVC,不要完全取出view,而是将Emberjs/Angularjs集成到View中,还用REST资源?这样就可以把所有的angularjs components/js文件放到static文件夹下部署到Heroku了。

这些是一样的吗?实际上,您如何将它们组合在一起以便能够部署到 Heroku?

【问题讨论】:

    标签: django rest angularjs heroku web-deployment


    【解决方案1】:

    Heroku 是一个应用服务器平台。它真的不是为提供静态代码而设计的。

    我之前采用的方法是正常构建 Django 部分,并有一个单一视图,为 JS App 根目录下的所有内容提供引导模板。

    假设我有一个位于mydomain.com/app/ 的 {Angular,Ember} 应用程序,那么它下面的所有内容都将服务于引导模板(包括从数据库中查询的序列化值)并调用 JS boostrap 方法来启动您的应用程序,然后应用程序从该点接管路由,并呈现它的视图。

    此时,视图的所有数据都来自 django-rest-framework/django-tasypie。

    使用这种方法并利用 django-pipeline 和 django-boto 的 S3 存储后端,您应该能够使用 Django 和 {Angular,Ember} 服务于一个体面的项目

    【讨论】:

    • 所以你是说你应该做的是创建一个 Angular/Ember 应用程序并让它在 mydomain.com 上运行。在那里添加所有响应式 UI 内容,然后让该应用程序与后端的 django rest 框架进行通信?通过这种方式,我们完全摆脱了 Django 的 View 对吧?
    • 另外,django-pipeline 和 django-boto 在其中扮演什么角色,为什么有必要?
    • 嗨,对不起,我花了这么长时间才回答。是的,我是说您可以从您的域(或其任何子路径)提供 Angular/Ember 应用程序并使用 REST API 与 Django 通信。您并没有完全消除 Django 的 View 层,因为您可能希望将信息嵌入到初始页面加载中(例如,用户的凭据/权限/功能标志)。 django-pipeline 用于将 JS 资源压缩和组合成包,可以显着提高页面加载时间。 django-boto 用于将这些上传到 S3。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2010-11-18
    • 2014-05-15
    • 2014-03-17
    • 2016-12-20
    • 2019-11-25
    相关资源
    最近更新 更多