6

我一直在构建一个 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”库的文档,我真的不知道它是否对我有任何好处。如果您有任何关于如何使用它们来解决此问题的示例,请告诉:)

4

2 回答 2

2

这是我能想到的一个技巧,它可能会奏效。

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

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()

于 2012-10-04T17:30:43.260 回答
1

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

谢谢djangopackages.com!!!

显然,我正在寻找一个术语,ROA(面向资源的架构)。这是来自 Ruby on Rails 世界的范例。有一个 django 应用程序可以处理这个问题,称为django-roa

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

于 2012-12-22T17:47:53.150 回答