【问题标题】:Django Rest Framework Views and regular django views for frontend用于前端的 Django Rest 框架视图和常规 django 视图
【发布时间】:2019-07-12 03:04:03
【问题描述】:

我正在开发一个带有后端的应用程序,它也将被移动应用程序使用。

因此我选择使用 DRF 创建 REST API。

现在我正在决定如何处理我的前端。我真的不想使用任何 javascript 框架并想坚持使用 Django。

我发现我可以使用 DRF (https://www.django-rest-framework.org/topics/html-and-forms/) 呈现 HTML 模板和表单。

但是,我想坚持使用常规的基于 Django 函数的视图并开发应用程序,并简单地使用移动开发人员可以使用的 DRF 公开 REST API。

这是一个好的编程习惯吗?如果不是,这种方法的缺点是什么。

【问题讨论】:

  • 无论你做什么,主要的问题都是scale,所以问问你自己兔子洞有多深)

标签: django rest django-rest-framework


【解决方案1】:

我认为在某些情况下只能有有效的答案,或对此类问题的主观答案。我认为如果你在 Django 中渲染所有的 HTML,并且没有 Javascript 框架,那么基本上没有前端,这也有点正确。当然,客户端仍然使用他们的浏览器呈现 HTML,但您不必编写或调试它。

这是一个好的编程习惯吗?

当然 - 它肯定已经过时了,但它已经用于许多任务。如果您的用例需要较少的客户端数量和处理负载,并且很少有导航切换/页面重新加载/数据更新,那么在 某些 情况下,后端的一切设计都会感觉非常快 - 浏览器不必做任何工作或加载任何 js 库。也许您主要显示很少更新的数据,或者以大表格收集大量数据。在我的工作中,我们将这种策略用于许多服务,因为无论如何我们都拥有所有的计算机并且只有不到几百名员工需要支持——我们不妨更努力地使用我们支付的服务器,而不是我们也支付的笔记本电脑(因为用户往往会不小心将咖啡洒在速度较慢的计算机上,并要求新的更快的计算机)。

但是,如果这是用于一般网络使用,您可能会发现许多用户希望能够在不重新加载的情况下输入/检索数据,并且重新加载体验会比 POST 数据和抛出一个预加载的微调器来分散注意力用户。更多用户对服务器的压力可能会成为问题。

您也只有一个代码库需要支持(无论如何都用于 API 和 Web),并且可以在更少的语言和框架之间切换。

如果不是这种方法的缺点是什么。

  1. 在每次导航/加载之间重新加载
  2. 服务器上的处理负载 - 大量用户或繁重的计算可能会变得很昂贵
  3. 页面失去了标准网络用户所期望的“交互式”感觉
  4. 提交支持您的移动应用程序的 API 和您的 Web 前端变得耦合(一些支持 Monorepo 的粉丝可能认为这是积极的)。有些人可能会警告不要耦合前端和后端代码,但我认为 Django 可以让你保持足够的整洁,只要你注意不要在你的视图中写任何愚蠢的东西。
  5. 无论如何,您都在为您的移动应用创建 API,您可以通过它路由所有数据访问,以减少重复、不一致、错误等。
  6. 您可能想制作更好的组件,或者使用现有的组件库,如果没有 js 前端会很痛苦
  7. 将来您可能会在更改模型和视图耦合方面遇到更多问题,而无需通过 API 进行抽象,可以更轻松地进行版本控制。
  8. 您可能会失去更有效缓存的能力,具体取决于您的数据、更新、布局等。

希望这会给您一些思考 - 就像我说的,我认为这里没有正确的答案 - 这取决于您的用例,我无疑会错过其他人可能会提出的一些观点。老实说,我个人更倾向于使用 js 前端。

祝你的项目好运:)

【讨论】:

    【解决方案2】:

    首先你应该问自己为什么要使用像 React 这样的东西,因为尽管它很受欢迎,但它的使用是有原因的坏主意,特别是如果你是优秀的 DRF。

    react 的问题是有很多人在使用它,如果您遇到困难,您可能会在互联网上找到更多帮助,但请记住一开始很难。

    想想您的应用程序需要什么,并记住每个框架都是有效的,各有利弊

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 2015-08-04
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多