0

我受托为现有的大型代码库创建 API,并决定使用 tasypie。问题在于应用程序结构。

我们有一个运行 Djnago ORM 的数据库。该应用程序不直接与 ORM 一起使用,而是通过一组方法(数据抽象层)处理诸如创建 ORM 对象、验证它们等事情。

我想将美味派与上述方法联系起来,以获得节流、身份验证等的所有好处,但我不知道该怎么做。

我试图为美味派编写一个自定义数据源(就像他们在文档中的 riak 示例),但我对需要覆盖的内容以及每种方法的作用感到非常困惑。

所以,总结一下:

  1. 我将如何在tastepie 和ORM 之间添加一个数据抽象层?
  2. 使用自定义数据源是否正确?
  3. 我将如何创建这样一个自定义数据源?

谢谢。

4

3 回答 3

0

我对此进行了更多研究,并发现了解 Resource 方法的最清晰方法是查看 Resource 和 ModelResource 的实际 TastyPie 源代码: https ://github.com/toastdriven/django-tastypie/blob/大师/tastypie/resources.py

这显示了它在使用 django 的 ORM 的情况下是如何工作的,并且它有一些体面的内联文档来解释它。

即使有了这个文档,发生的事情并不总是很明显,但我所做的是创建一个与 ModelResource 相同的资源子类,然后将日志记录添加到每个方法并操作 API 以查看调用了哪些方法以及它们做了​​什么。然后我会慢慢地,一步一步地改变方法来实现我的自定义,非 ORM 行为。

于 2013-09-07T07:18:36.927 回答
0

是的,TasyPie 就是这样做的。基本上,将 API 调用直接连接到 django ORM 功能非常简单。您将使用与您的 Django 模型相关的类,它们是 TasyPie 的 ModelResource 的子类,并且它处理事情,以便它们开箱即用地快速工作。但是对于想要做一些更定制化的事情的人来说,比如与你的数据抽象层的接口,有一种方法来定制事情。基本上不是使用 ModelResource,而是使用 Resource 类,并且当进行不同的 API 调用时,您必须实现一组方法以使它们与数据抽象层一起使用它在此处的文档中进行了描述:

http://django-tastypie.readthedocs.org/en/latest/resources.html

文档中给出了一个示例,说明如何在名为的部分中实现自定义资源

将 Tastypie 与非 ORM 数据源一起使用(我会发布链接,但 Stack Overflow 将我限制为 po

不幸的是,它并没有准确地说明代码在做什么,而且解释有点薄恕我直言这个例子正在为一个完全非 ORM 的无 SQL 数据库创建一个自定义接口,称为 Riak。如果您正在使用 Riak,或者即使您对 Riak 有所了解,但我不知道,那就太好了。我发现尝试阅读有关两种新技术的代码并弄清楚代码实际在做什么有点令人困惑。

这里有一个很好的更简单的示例,使用自定义 Resource 用于教育目的,将 API 调用连接到简单的 python 类:

https://gist.github.com/nomadjourney/794424

我根本不是 Tastypie 方面的专家,事实上我只是从它开始。像您自己一样,我需要实现自定义资源,而不是使用开箱即用的简易模型资源。我还没有成功地做到这一点,但我想我会让你知道我发现了什么。在 TastyPie 文档中,他们提到编写它的人维护一个活跃的 IRC 频道,他们会在其中帮助您。如果你仍然卡住,如果你在这里没有得到你需要的东西,这可能比 stackoverflow 更好。祝你好运,如果我得到一个工作最好的 Doug,我会尝试发布一个例子

于 2013-09-07T01:44:39.943 回答
0

另一个比 TastyPie 的非 ORM 示例更容易理解的资源:http: //thehungrycoder.com/python/using-non-orm-data-sources-with-tastypie-in-django.html

于 2013-09-07T02:34:24.003 回答