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

时间:2013-06-26 08:54:17

标签: django django-templates django-rest-framework

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

  1. 的widget
  2. 当然,Page和Widget具有ManyToMany关系。

    与任何优秀的仪表板实现一样,设计人员可以在窗口小部件中更改3件事:

    1. 驱动小部件的数据源
    2. 在页面上放置小部件
    3. 在小部件中呈现数据
    4. 数据是使用Widget中的URL字段指定的,并由基于Django REST Framework的REST API和django-filter后端提供服务。

      页面上的位置使用优秀的Gridster进行照顾。

      这留下了演示文稿部分。我有两种可能的解决方案:

      1. 将模板TextField附加到Widget。数据将以JSON格式从Web服务获取,并根据客户端Widget中定义的模板(手柄)进行呈现。
      2. 将模板名称作为查询字符串传递给REST API,并使用用户指定的模板呈现数据。
      3. 现在上下文已明确定义(希望如此),以下是我的问题:

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

1 个答案:

答案 0 :(得分:2)

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

那么你能做到吗?并且仍能使用DRF Serializers生成的自动表格吗? - 简短的回答,这取决于你的“自动形式”的意思。

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

如果(虽然)通过“自动表单”表示你仍然可以使用DRF在其web可浏览API中提供的HTML表单,那么答案是否定的。可浏览的API围绕返回整个网页的HTML渲染器构建。这些包括您将使用的JSON的漂亮印刷表示以及在此假设下您感兴趣的网络表单。

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

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

相关问题