tastypie和Django ORM之间的数据抽象层

时间:2013-09-03 15:57:08

标签: python django orm tastypie

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

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

我想将tastypie与所述方法联系起来,以获得限制,身份验证等所有好处,但我不知道该怎么做。

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

所以,总结一下:

  1. 我如何在tastypie和ORM之间添加数据抽象层?
  2. 正确使用自定义数据源吗?
  3. 我将如何创建这样的自定义数据源?
  4. 感谢。

3 个答案:

答案 0 :(得分:0)

是的,TasyPie这样做。基本上,将API调用直接连接到django ORM功能非常简单。您将使用与您的Django模型相关的类,这些模型是TasyPie的ModelResource的子类,它可以处理事物,因此它们可以快速开箱即用。 但对于那些想要做更多定制的人来说,比如你的Data Abstarction Layer的界面,有一种定制方式的方法。基本上不使用ModelResource而是使用Resource类,而且您需要实现一组方法,以便在进行不同的API调用时使它们与Data Abstarction Layer一起使用 它在文档中描述:

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

在文档中给出了一个如何实现在名为

的部分中描述的自定义资源的示例

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

不幸的是,它并没有真正说明代码正在做什么,并且解释是有点薄恕我直言 此示例为一个名为Riak的完全非ORM No SQL数据库创建自定义接口。如果你使用Riak,或者即使你对Riak有所了解,我也不会这样做。我发现在尝试阅读有关两种新技术的代码并弄清楚代码实际在做什么时,有点令人困惑。

这是一个很好的简单示例,在这里使用自定义资源进行教育,将API调用连接到简单的python类:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我对此进行了更多研究,并通过查看Resource和ModelResource的实际TastyPie源代码,找到了理解资源方法功能的最清晰方法: https://github.com/toastdriven/django-tastypie/blob/master/tastypie/resources.py

这显示了在使用django的ORM的情况下它是如何工作的 它有一些不错的内联文档可以解释它。

即使使用这个文档,它并不总是立即显而易见,但我所做的是使REsource子类开始与ModelResource相同,然后向每个方法添加日志记录并操纵API以查看调用哪些方法以及它们是什么做。 然后我会慢慢地,一步一步地改变方法来实现我的自定义非ORM行为。