Django - 使用从类似 REST 的 API 检索的数据构建报告的应用程序
Posted
技术标签:
【中文标题】Django - 使用从类似 REST 的 API 检索的数据构建报告的应用程序【英文标题】:Django - app to build reports using data retrieved from a REST-like API 【发布时间】:2012-09-25 18:58:40 【问题描述】:我一直在构建一个 Django 应用程序,该应用程序使用来自一个扩展的类似 REST 的 API 的数据。 API 是使用 .NET 构建的(糟糕!不是我的选择),因为我宁愿挖出我的眼球也不愿学习微软工具(我是 *nix/OSX 人),因为我不想要前端为了影响 API,反之亦然,我选择在另一台服务器上使用 Django 构建前端。
Django 站点充当主 DB/API 和最终用户之间的中间人。 API 中的所有数据都不会保留在 Django 站点中,它只是以一种很好的人类可读格式重新格式化/显示所述数据。现在我已经构建了我的 API 客户端和所有视图,我正在寻找创建一个报告生成器。
是否有任何应用程序可以创建临时模型来表示来自 API 调用的对象?我希望能够在从 API 接收的 JSON/XML 数据之间创建关系,但不需要在我的 Django 站点中复制数据库结构,那将是多余的。
最终目标是让用户能够根据来自数据 API 的请求创建/保存自定义过滤报告。任何建议将不胜感激。 (请不要回复“只需在 Django 中复制模型,然后插入从 API 检索到的数据”。这将完全抵消让 DB/API 在与前端不同的服务器上运行的意义。
注意 - 我已经查看过 note 的 Dark,但是由于缺乏关于它的文档,并且缺乏关于依赖的“docu”库的文档,我真的不知道它是否对我有任何好处。如果您有任何如何使用它们来解决此问题的示例,请告诉:)
【问题讨论】:
可能相关:***.com/questions/1290891/… 我正在使用 django-tables 进行调查:django-tables2 似乎我可以使用它来实现我的目标 很酷,但对解决我的问题并不是很有用 【参考方案1】:这是一个我认为可能有效的 hack。
首先,除了您拥有的任何其他数据库之外,还定义一个虚拟数据库后端:
DATABASES =
'default':
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'mydatabase'
,
'dummy':
'ENGINE': 'django.db.backends.dummy',
'NAME': 'dummy'
然后按照您的意愿定义您的非数据库模型。从那里你有 using
功能可以告诉 Django 为该调用使用特定的后端,并请求使用虚拟后端:
objs = YourModel.objects.using('dummy').all()
或者,您也可以不使用save()
'ing 直接创建对象。
【讨论】:
有趣的想法。也许我真正在寻找的解决方案是自定义数据库后端(类似于 Cocoa 核心数据中的 InMemoryStore) 我看到了虚拟缓存后端的文档,但没有看到虚拟数据库后端的文档。这是在哪里记录的? 据我了解,虚拟数据库后端对我们没有好处,除非您制作自己的版本,它只是一个默认的虚拟类。通读定义类的代码,它会在大多数方法上抛出异常(通知您尚未设置数据库)【参考方案2】:我实际上最终找到了解决这个问题的方法,很久以后哈哈。
谢谢djangopackages.com!!!
显然,我正在寻找一个术语,ROA(面向资源的架构)。这是来自 Ruby on Rails 世界的范例。有一个 django 应用程序可以处理这个问题,称为 django-roa
所以我会尝试一下,感谢@Yuval Adam 的尝试
【讨论】:
以上是关于Django - 使用从类似 REST 的 API 检索的数据构建报告的应用程序的主要内容,如果未能解决你的问题,请参考以下文章
django-rest-framework - 在可浏览的 API 中自动生成表单?
使用 Django 访问没有表单(REST api)的 POST 字段数据
使用 Axios 从前端访问 Django Rest API 时出现 Cors 错误