Django - 使用从类似REST的API检索的数据构建报告的应用程序

时间:2012-10-04 17:16:51

标签: python django json rest django-models

我一直在构建一个Django应用程序,它使用来自类似REST的API的数据。 API是使用.NET构建的(yuck!不是我的选择),因为我宁愿挖出我的眼球而不是学习Microsoft工具(我是* nix / OSX人),因为我不想要前端为了影响API,反之亦然,我选择在另一台服务器上使用Django构建前端。

Django站点充当主DB / API和最终用户之间的中间人。来自API的数据都没有保存在Django站点中,它只是以一种很好的人类可读格式重新格式化/显示所述数据。现在我已经构建了我的API客户端和所有视图,我希望创建一个报表生成器。

是否有任何可以创建Transitory Models来代表API调用对象的应用程序?我希望能够在从API接收的JSON / XML数据之间建立关系,但不需要在我的Django站点中复制数据库结构,这将是多余的。

最终目标是让用户能够根据数据API的请求创建/保存自定义过滤报告。任何建议将不胜感激。 (请不要回复'只是在Django中复制模型,并插入从API中检索的数据'。这完全会使DB / API在与前端不同的服务器上运行时完全无效。< / p>

注意 - 我已经看过neithere的Dark,但由于缺少文档,而且缺少关于'docu'库的文档,我真的不知道它对我有什么好处。如果您有任何关于如何使用它们来解决此问题的示例,请告诉:)

2 个答案:

答案 0 :(得分:2)

这是我能想到的可行的黑客攻击。

首先,除了您拥有的任何其他数据库之外,还要定义一个虚拟数据库后端:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase'
    },
    'dummy': {
        'ENGINE': 'django.db.backends.dummy',
        'NAME': 'dummy'
    }

然后像你一样定义你的非db模型。从那里你有using功能可以告诉Django为该调用使用特定的后端,并请求使用虚拟后端:

objs = YourModel.objects.using('dummy').all()

或者你也可以在没有save()的情况下创建对象。

答案 1 :(得分:1)

我实际上最终找到了解决这个问题的方法,很久以后大声笑。

谢谢djangopackages.com !!!

显然,我所寻找的是一个术语,即ROA(资源导向架构)。这是Ruby on Rails世界的范例。有一个django应用程序处理这个称为django-roa

所以我会试验一下,感谢@Yuval Adam的尝试