Django-tassypie 和 django-stassFramework 之间有什么区别?

为什么要使用一个而不是另一个,为您的 Django 应用程序公开 API?

Http://pypi.python.org/pypi/djangorestframework/

Http://pypi.python.org/pypi/django-tastypie

38442 次浏览

过时的回答,味道不再是真正的保持了。如果您必须选择一个框架来执行 REST,请使用 Django REST 框架。

要了解他们之间的实际差异,您应该阅读他们的文档。他们都或多或少是完整和相当成熟的。

不过我个人比较喜欢美味。看起来安装起来更容易。它是由创建 大海捞针的同一个人完成的,这是令人敬畏的,根据 姜戈包裹,它比 Django REST 框架使用得更多。

作为 django-rest-Framework 的作者,我有一个明显的偏见;)但是我希望,相当客观的看法是这样的:

美味派

  • 正如托斯滕指出的那样,你不会因为一些与令人敬畏的 大海捞针相同的人写的东西而走错很远。我在他们的邮件列表中看到 Daniel Lindsey 等人非常有帮助,Tastypie 是稳定的,全面的,文档化的
  • 擅长为您提供一组合理的默认行为,并使构建具有这种风格的 API 变得非常容易。

Django REST 框架

  • 提供 HTML 可浏览的自描述 API。(例如,请参阅 教程 API。)能够在浏览器中直接导航并与 API 交互是一个重大的可用性胜利。
  • 尝试始终与 Django 习惯用法保持一致——构建在 Django 的基于类的视图之上,等等。.(鉴于 TastyPie 出现在 Django 的 CBV 之前,因此使用了它自己的基于类的视图实现)
  • 我认为底层架构已经构建得很好了,解耦了等等。

无论如何,两者都是好的。我可能会将 Tastypie 描述为提供了一组合理的默认设置,而 REST 框架具有很好的解耦性和灵活性。如果你计划在 API 上投入大量的时间,我建议你浏览每个 API 的文档和代码库,试着去感受哪个更适合你。

显然,在它的 README 中还有 为什么是 TastyPie部分和 REST 框架3

另请参阅 Daniel Greenfeld 2012年5月关于 为 Django 选择 API 框架的博客文章(值得注意的是,这距离大型 REST 框架2.0发布还有几个月的时间)。

Reddit 上也有一些人在问同样的问题,来自 二零一三年十二月2013年7月

两者都是不错的选择。

对于过滤器来说,美味更强大的是开箱即用。如果您有一个暴露模型的视图,您可以使用 Django 风格的不等式过滤器:

http://www.example.com/api/person?age__gt=30

或查询:

http://www.example.com/api/mymodel?language__in=en&language__in=fr

这些都可以在 djangorestFramework 中实现,但是您必须为每个模型编写自定义过滤器。

对于回溯,django-rest-Framework 给我留下了更深刻的印象。当 DEBUG = False发生异常时,Tastypie 尝试给 settings.ADMINS发电子邮件。当 DEBUG = True默认的错误消息是序列化的 JSON,这是比较难读的。

值得注意的是,自从首次提出这个问题以来,DRF 已经变得越来越强大。

它是 github 上两者中最活跃的(包括提交、星级、分支和贡献者)

DRF 支持 OAuth 2和可浏览的 API。

老实说,对我来说,最后一部电影才是杀手。当我的所有前端开发人员不确定某些东西是如何工作的时候,他们能够指向可浏览的 API,然后说‘去玩吧,找出来’,这真是太棒了。

不仅仅是因为这意味着他们可以按照自己的方式来理解它,并且知道 API 真的、绝对地完成了“文档”所说的任务。在与 API 集成的世界中,这一事实本身就使得 DRF 成为一个可以击败的框架。

使用了这两种方法之后,我喜欢(更喜欢) Django 剩余框架的一点是,它与 Django 非常一致。

编写模型序列化器与编写模型窗体非常相似。内置的泛型视图与 Django 的 HTML 泛型视图非常相似。

Tastypie 和 DRF 都是很好的选择。你只是简单地 不行与他们中的任何一个出错。(我从来没有在活塞身上工作过; 现在它已经不再流行了,所以不会/不能对它发表评论。视为理所当然。). 以我个人的拙见: 选择应该取决于你(和你的技术团队)的技能、知识和能力。而不是 TastyPie 和 DRF 提供的东西,除非你正在构建像 Quora、 Facebook 或谷歌这样真正大的东西。

就我个人而言,我最初开始在 TastyPie 工作的时候,我甚至还不太了解姜戈。在当时,所有这些都是有意义的,只是非常了解 REST 和 HTTP,但几乎没有或几乎没有关于 django 的知识。因为我的唯一目的是在任何时候构建 RESTful API,这些 API 将在移动设备中使用。因此,如果你只是喜欢“我碰巧在那个时候被称为 django-new-bie”,别再想美味派了。

但是如果你有很多使用 Django 的 好几年了经验,对它了如指掌,并且使用高级概念(比如基于类的视图、表单、模型验证器、 QuerySet、 Manager 和模型实例,以及它们之间的交互方式)非常舒服,那么就使用 DRF 吧。* * DFR 基于 django 的基于类的视图。 DRF 是姜戈的惯用语。它就像你在编写模型表单、验证器等等(好吧,惯用 django 与惯用 python 完全不同。如果您是 Python 专家,但是没有使用 Django 的经验,那么您可能在最初适应惯用的 Django 哲学和 DRF 方面遇到困难)。 DRF 提供了许多内置的魔法方法,就像 django 一样。如果你喜欢姜戈的魔法方法和哲学,DRF 就是为你量身定做的。

现在,回答一个确切的问题:

美味:

优点:

  1. 易于入门并提供基本功能 OOB (开箱即用)
  2. 大多数时候,您不会处理高级 Django 概念,如 CBV、表单等
  3. 更易读的代码和更少的魔力!
  4. 如果你的模型是非 ORM 的,那就去做吧。

缺点:

  1. 不严格遵循习惯用法 Django (mind well python 和 Django 的哲学完全不同)
  2. 一旦您发展壮大,可能很难自定义 API
  3. 没有 O-Auth

DRF:

  1. 按照惯用的姜戈。(如果你对 django 了如指掌,并且对 CBV、 Forms 等非常熟悉,毫无疑问,你可以去尝试一下)
  2. 使用 ModelViewSet 提供开箱即用的 REST 功能。同时,使用 CustomSerializer、 APIView、 GenericView 等提供更强大的定制控制。
  3. 更好的鉴定。更容易编写自定义权限类。工作非常好,重要的是非常容易使它与第三方图书馆和 OAuth 工作。DJANGO-REST-AUTH 值得一提的是用于授权/社会认证/注册的库。(https://github.com/Tivix/django-rest-auth)

缺点:

  1. 如果你不是很了解姜戈,就别这么做。
  2. 魔法!有时候很难理解魔法。因为它写在姜戈的 CBV 之上,而 CBV 又是相当复杂的。(https://code.djangoproject.com/ticket/6735)
  3. 学习曲线陡峭。

就我个人而言,我将在我的下一个项目中使用什么?

  • 现在,我不再是魔术和开箱即用功能的粉丝了。因为他们付出了巨大的代价。假设我有所有的选择和控制项目时间和预算,我会从一些轻量级的东西开始,比如 RESTless (https://github.com/toastdriven/restless)(由 TastyPie 和 django-haystack (http://haystacksearch.org/)的创建者创建)。对于同样的问题,可能/肯定会选择像 酒瓶。这样的轻量级 Web 框架

  • 但是为什么呢?- 更易读、简单和易于管理的惯用 python (又名 pythonic)代码。虽然代码较多,但最终提供了很大的灵活性和定制性。

    • 显式比隐式好。
    • 简单比复杂好。
    • 复杂比复杂好。
    • 平坦比嵌套好。
    • 稀疏总比密集好。
    • 可读性很重要。
    • 特殊情况不足以破坏规则。

如果你除了姜戈和美味派和 DRF 之外别无选择怎么办?

  • 现在,我对姜戈相当了解,我会选择 DRF
  • 为什么?-惯用的 djagno! (虽然我不喜欢它)。更好的 OAuth 和第三方集成(django-rest-auth 是我的最爱)。

那你当初为什么选择 DRF/TastyPie?

  • 大多数情况下,我都和创业公司和小公司打过交道,这些公司的预算和时间都很紧张,需要快速交付一些有用的东西。姜戈很好地达到了这个目的。(我并不是说 django 不可伸缩。有像 Quora,Disquuss,Youtube 这样的网站在上面运行。但这一切都需要时间和超过平均水平的技能)

我希望它能帮助你做出更好的决定。

其他参考文献- 美味的状态(http://toastdriven.com/blog/2014/may/23/state-tastypie/) 2. django-tassypie 和 django-stypie 框架有什么区别? (Django-tassypie 和 django-stassFramework 之间有什么区别?)

Django-tastypie 不再由它的原创者维护,他创造了一个自己的新的轻量级框架。

目前,如果您愿意公开您的 API,那么应该将 django-rest-Framework 与 django 一起使用。

Django-rest-Framework 是 django 团队的核心成员,他获得资金来维护 django-rest-Framework。

Django-rest-Framework 也有大量不断增长的第三方软件包,这将帮助您更容易地构建您的 API,减少麻烦。

Drf 的某些部分也将合并到 django 中。

Drf 提供了比 django-tassypie 更好的模式和工具。

简而言之,它设计良好,维护良好,资金充足,提供庞大的第三方应用程序,受到大型组织的信任,更容易,更少样板等。