【发布时间】:2016-12-04 00:05:24
【问题描述】:
在开始一个新项目之前,我正在寻求一些建议。
我正在使用 Django 1.10 创建一个 Web 应用程序。我有使用 Django 的经验并用它创建一般的“基于内容”的网站。然而,由于这个项目将是一个基于 Web 的应用程序,我计划做更多“复杂”的事情,而不仅仅是渲染 HTML 模板和做一些基本的 CRUD 操作。当我说“复杂”的事情时,我现在可以给出的最具体的例子是利用更多的异步请求,这样我的 Web 应用程序可以保持对用户的响应,并提供应用程序附带的“实时”体验可能安装在他们的本地机器或其他任何东西上。另外,由于这是一个 Web 应用程序,而不仅仅是一个网站,该项目肯定会更加数据驱动,这可能意味着请求大量数据,这些数据最好以分页方式等方式提供服务。
所以,我的想法是这样.....因为我熟悉 Django 并阅读了有关 Django REST 框架的好东西,我可以创建一个 RESTful API 来执行我所有的 CRUD 操作并基本上与我的Web 应用程序的核心数据库。
那时,我基本上可以有两个“层”:(1) 呈现我的 Web 应用程序页面的表示层和 (2) 将执行所有后端 CRUD 操作的应用程序层。由于两者是分开的,如果以后需要的话,我还将获得能够从其他途径(除了我的 Django Web 应用程序)利用 API 的额外好处。
我想我的第一个问题是这是否有意义,如果是,请考虑实施它的最佳方式。我相信我有两个选择。
创建单个 Django 项目并将 API 作为单独的应用程序包含在内。这似乎可以正常工作,但它将我的 API 与我的演示文稿结合在一起,因为它们都将由同一台服务器托管。哪个...如果 API 的唯一“消费者”是我的一个 Django 站点,那么这在短期内可能不是问题,但以后可能会导致问题。
将两者分成两个不同的 Django 项目。我认为这提供了最大的灵活性并且可能是最好的答案。
可能还有其他选择。归根结底,我正在向以前做过这件事的人寻求一些建议/指导,以及在开始这项工作之前我应该考虑哪些其他事情。
【问题讨论】:
-
我建议制作一个 Django REST 框架来构建 API,并使用 ReactJS 或 Angular 之类的东西做前端。如果您需要 websockets,那么您可以添加 Django-Channels。前端可以是静态文件和单独的项目。
标签: django django-rest-framework