用户控制的仪表板应用程序小部件中的数据呈现 - 最佳实践?
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 的幻灯片。也许它会对您或未来项目中的其他人有用..以上是关于用户控制的仪表板应用程序小部件中的数据呈现 - 最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章