前端、后端或数据库:我应该在哪里生成数据来创建组件?

2024-09-28 03:19:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程有点陌生。我们正在使用React、Redux和Django Rest框架创建一个应用程序。此应用程序的主要目标是以一种友好且易于理解的方式呈现教育数据。我正在使用Nivo创建各种图表。现在,我们正在创建一个简单的折线图,显示每所学校在某项全国性考试中取得的分数。Nivo需要数据来生成此JSON格式的图表:

[
  {
    "id": "japan",
    "color": "hsl(175, 70%, 50%)",
    "data": [
      {
        "x": "plane",
        "y": 52
      },
      {
        "x": "helicopter",
        "y": 110
      },
      {
        "x": "boat",
        "y": 210
      },
    ]
  }
]

我掌握的数据如下:

school_id   school_type   year   grade   first_application_score   second_aplication_score  avg
   1           public     2015     3             6.5                     7.2                6.9
   1           public     2016     4             7.9                     7.1                7.5
   2           private    2015     5             5.5                     6.5                6.0

我的问题是:我应该在哪里生成数据来创建图表数据?在我对网络编程的实际理解水平上,我可以使用以下策略:

  1. 我可以使用SQL在数据库中创建新表:此表将具有x和y值,因此Django中的API将不进行计算,只发送从数据库发送的静态数据
  2. 我可以在Django中完成:Django将接收上表所示的数据,处理所有内容,并通过API以正确的格式返回数据,以便Nivo生成图表
  3. 我可以在React-Redux中实现这一点:通过Django API发送的数据将与上表完全相同,我将其传递给一些Redux中间件,这些中间件可以更改所有内容并生成React图表

最好的策略是什么?最糟糕的策略是什么?为什么?最一致的方法是什么?为什么


Tags: 数据djangoapiid应用程序格式编程图表
1条回答
网友
1楼 · 发布于 2024-09-28 03:19:24

正如您可能已经猜到的,这是个人偏好的问题,并且在很大程度上取决于您的特定用例

一些考虑:

  • 您希望存储数据的结构不一定能很好地转换为用于构建/显示图表的结构,因此我将两者完全分开。以一种方式将数据存储在数据库中,并编写一些方法为图表库准备数据
  • 关于如何检索、更新、创建和删除数据,AREST API应该遵循相当严格的原则。关于如何创建有意义的{},可以阅读{a1},了解一些原则指导原则和方法
  • 想想有多少人将访问您的后端,准备数据需要多少计算能力。如果SQL数据和图表数据之间的“转换”需要相当长的时间,那么最好将此逻辑转移到客户端,因为这样可以释放后端的资源。如果只是简单地组合一个JSON响应,那么可以在后端完成

这一切归结为一个问题,你希望你的逻辑在哪里?在后端?还是在前端

我想我会同意你的第二个选择:

  1. 通过创建适当的模型(Django)将数据存储在数据库中
  2. 创建一个有意义的API,允许访问数据,可能是通过使用DRFdjango-filter 根据您需要的图表类型(以及您计划更改此类型的频率),我将创建端点,通过以下请求交付准备好的数据(准备在前端由图表库使用):

GET https://your-backend.com/api/v1/data/nationaltest?begin=2019-01-01&end=2019-12-31

通过使用过滤器,您还可以编写包含/排除某些数据字段的逻辑(如名称或非特权用户的匿名数据等)

相关问题 更多 >

    热门问题