用户控制的仪表板应用程序小部件中的数据呈现 - 最佳实践?

Posted

技术标签:

【中文标题】用户控制的仪表板应用程序小部件中的数据呈现 - 最佳实践?【英文标题】:User controlled presentation of data in widgets on a dashboard app - Best Practices? 【发布时间】:2013-06-23 07:53:13 【问题描述】:

考虑一个非常简单的 Django 仪表板应用程序。它有 2 种型号:

    页面 小部件

当然,Page 和 Widget 具有 ManyToMany 关系。

就像任何好的仪表板实现一样,设计人员可以在一个小部件中更改 3 件事:

    驱动小部件的数据源 在页面上放置小部件 在小部件内显示数据

使用 Widget 中的 URL 字段指定数据,并由基于 Django REST Framework 和 django-filter 后端的 REST API 提供服务。

页面上的展示位置是使用出色的 Gridster 提供的。

这将离开演示部分。我有两种可能的解决方案:

    将模板 TextField 与小部件附加在一起。数据将以 JSON 格式从 Web 服务中获取,并根据客户端 Widget 中定义的模板(把手)呈现。 将模板名称作为 URL 中的查询字符串传递给 REST API,并使用用户指定的模板呈现数据。

既然已经明确定义了上下文(希望如此),以下是我的问题:

    有什么方法可以选择第一个解决方案,并且仍然可以使用 DRF 序列化程序生成的自动表单? 如果不是,我选择了第二种解决方案,在安全性、代码维护、代码质量、测试等方面是否存在任何潜在的陷阱?为什么我没有看到其他人这样做,即让用户通过查询字符串选择模板? 我还缺少其他解决方案吗?

【问题讨论】:

【参考方案1】:

您的第一个选项似乎最有希望:以 JSON 格式获取数据并将其插入到客户端的模板中。都好。

那么你能做到“并且仍然能够使用 DRF 序列化程序生成的自动表单”吗? ——简短的回答,这取决于您所说的“自动表单”是什么意思。

序列化器获取一个数据字典,对其进行验证并(对于ModelSerializer 子类)将其转换为您的(模型)对象实例。如果通过“自动表单”您的意思是您仍然能够进行这种验证行为,那么答案是肯定的。在客户端上创建 JSON 有效负载并向 API 发送适当的 HTTP 请求。 Django Rest Framework 的序列化程序将按预期工作。

如果(尽管)“自动表单”是指您仍然能够使用 DRF 在其网络浏览 API 中提供的 html 表单,那么答案是否定的。可浏览 API 是围绕返回整个网页的 HTML 渲染器构建的。其中包括您将使用的 JSON 的精美印刷表示,以及在此假设下您感兴趣的 Web 表单。

如果您走这条路,您需要在客户端生成表单,使用您选择的库(库?)提供的任何模型、视图、模板和绑定功能。

我希望这会有所帮助。祝你好运。

【讨论】:

感谢您的回答。实际上,我发现并最终使用了一个令人惊叹的项目,它提供了两全其美的效果!请查看django-remote-forms。 Here 是 djangocon US 2012 的幻灯片。也许它会对您或未来项目中的其他人有用..

以上是关于用户控制的仪表板应用程序小部件中的数据呈现 - 最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

如何在显示时使用 jQuery 对元素进行操作:无

多个用户同时运行一个仪表板

自定义小部件中的 dojo 数据网格未呈现

在 django 中构建仪表板

在此小部件上方找不到正确的提供程序

Thingsboard二开系列拷贝篇-08widget(01简介)