Django:更新曾经从模板发送到视图的数据的最快方法

时间:2018-12-10 23:18:20

标签: javascript python django

我正在开发一个数据可视化应用程序,该应用程序将允许用户按照各种条件过滤看到的数据。

我想在Python / Django方面保持尽可能多的逻辑,像这样:

  1. 数据从Django视图传递到模板。
  2. 在前端,用户通过各种控件过滤数据:下拉菜单,滑块等。
  3. 控件输入被发送回Django视图(通过AJAX发布请求?),该视图返回过滤后的数据并将其发送回模板。

4。模板-可视化-已使用过滤后的数据进行更新。

这是一个好方法吗?我担心的是,大量数据将四处飞扬,并且该应用可能无响应。

另一个可能更快的想法是使用JavaScript在客户端过滤数据-但我真的很想利用出色的Python数据处理库。

1 个答案:

答案 0 :(得分:0)

如果要使用DRF API,请使用它。许多网站都具有过滤功能。我建议您看一下django_filter软件包。 possible to integrate是DRF。

在客户端过滤数据的最糟糕的事情是您不能使用分页。假设您要过滤500个以上的对象,而javascript过滤功能确实会使您的应用变慢。

同时,如果您要过滤20-30个对象,并且这个数字不会增加,则可以仅使用JS和单个端点:getAll()

常见方法是设置javascript on_change处理程序并构造GET请求,例如(来自真实项目的示例):

https://yourbackend.com/api/product/?status=not_published,published,inactive&search=132&moderation_status=declined,on_moderation,not_ready&ordering=desc&price_max=1000&page=1

DRF + django_filters可以用最少的代码就可以正常工作 参与其中。

众所周知,js方面的pitfail是在不超时的情况下发出请求,例如,用户编写文本并且在每个keyUP()事件请求发送时发送。或者,他移动滑块并发出许多请求-您需要在用户停止它时发出请求,例如,在他选择值之后300毫秒。请参阅此question以供参考。

当然,还有一点。您的数据库必须规范化并具有正确的索引。但是,如果要使用真正的慢速SQL查询器,则必须看看这一面。

总结:我会选择薄js层并在后端完成大部分工作。