0

最近开始学习 Django。长话短说 -

如果我选择结合:

  • 我服务器端的 django 框架
  • REST 作为中间件层
  • 一些客户端框架(如 React、Angular 等)

django 的哪个MVC 组件将变得无关紧要?
我认为模板组件。在这种情况下,是否有任何其他不需要的基本组件(模型/视图......)?

4

1 回答 1

0

假设根据您的帖子,您使用 Django 只是为了从数据库中提取数据并以 JSON 格式将其提供给客户端,并且您的模板将在客户端呈现(使用例如 Angular),那么您是正确的可能不需要 Django 模板。但是,您仍然需要某种模型(无论您使用 Django 模型还是其他东西),并且还需要控制器(Django 称之为views)以便:

  1. 做 URL 路由(即将一些 URL 绑定到一些控制器/视图函数)。
  2. 进行某种服务器端处理。即使您的应用程序是单页应用程序并进行大量客户端处理,您仍然可能需要在服务器端实现不同类型的业务需求和验证。其中一些要求您可能会附加到模型中,但其他要求可能需要在控制器中实现。

因此,尽管由于您构建应用程序的方式,您的控制器(也称为视图)可能会“更精简”,但它们在某种程度上仍然是必要的。如果您想为数据库提供一些干净且一致的 API,则始终需要模型。

编辑:为了对此进行更多扩展——虽然有一个名为 Django REST Framework 的 Python 库,但它实际上只是为了帮助您构建 RESTful API。您当然可以使用 Django 自己构建一个 RESTful API,而无需利用它或任何其他库。正如用户 D. Shawley 在回答这个问题时所说的那样——RESTful 编程到底是什么?-- RESTful API 基本上只是一个资源由持久标识符(在本例中为 URI)标识,并且使用一组通用动词(在本例中为 HTTP 方法,如 GET、POST、DELETE、 ETC)。因此,使用 URI 作为名词和 HTTP 方法作为动词的想法,您的 Django 框架可能支持以下 RESTful 操作:

  • GET https://your-app.com/product/123- 此操作获取由 ID 标识的产品123
  • POST https://your-app.com/product- 此操作创建一个新产品
  • PUT https://your-app.com/product/123- 此操作更新由 ID 标识的产品123
  • DELETE https://your-app.com/product/123- 此操作删除由 ID 标识的产品123

从这些操作返回的数据不一定需要采用任何特定格式(无论是 JSON、XML 还是其他格式)。在一个严格遵守 REST 原则的应用程序中,客户端(您的 RESTful API 的使用者,在这种情况下是您的前端应用程序)将能够指定(使用 HTTPAccept标头)他们想要以哪种格式使用数据.

我希望这不会太令人困惑,但我真的想明确一点,REST 架构只是一组原则,Web 程序员开发的 API 不一定 100% 遵守这些原则。您的应用程序是否有必要严格遵守 RESTful 原则取决于您的特定要求。那么要问自己的一个问题是,您希望通过使用 Django 构建 RESTful API 来实现什么?对于许多开发人员来说,答案很简单,“这样我就有一个易于使用的界面,供我的 Angular/React/etc. 应用程序检索和更新服务器端资源。”

于 2018-04-07T20:41:28.650 回答