为什么要使用一个而不是另一个,为您的 Django 应用程序公开 API?
Http://pypi.python.org/pypi/djangorestframework/
Http://pypi.python.org/pypi/django-tastypie
过时的回答,味道不再是真正的保持了。如果您必须选择一个框架来执行 REST,请使用 Django REST 框架。
要了解他们之间的实际差异,您应该阅读他们的文档。他们都或多或少是完整和相当成熟的。
不过我个人比较喜欢美味。看起来安装起来更容易。它是由创建 大海捞针的同一个人完成的,这是令人敬畏的,根据 姜戈包裹,它比 Django REST 框架使用得更多。
作为 django-rest-Framework 的作者,我有一个明显的偏见;)但是我希望,相当客观的看法是这样的:
无论如何,两者都是好的。我可能会将 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,这是比较难读的。
DEBUG = False
settings.ADMINS
DEBUG = True
值得注意的是,自从首次提出这个问题以来,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 就是为你量身定做的。
现在,回答一个确切的问题:
美味:
优点:
缺点:
DRF:
就我个人而言,我将在我的下一个项目中使用什么?
现在,我不再是魔术和开箱即用功能的粉丝了。因为他们付出了巨大的代价。假设我有所有的选择和控制项目时间和预算,我会从一些轻量级的东西开始,比如 RESTless (https://github.com/toastdriven/restless)(由 TastyPie 和 django-haystack (http://haystacksearch.org/)的创建者创建)。对于同样的问题,可能/肯定会选择像 酒瓶。这样的轻量级 Web 框架
但是为什么呢?- 更易读、简单和易于管理的惯用 python (又名 pythonic)代码。虽然代码较多,但最终提供了很大的灵活性和定制性。
如果你除了姜戈和美味派和 DRF 之外别无选择怎么办?
那你当初为什么选择 DRF/TastyPie?
我希望它能帮助你做出更好的决定。
其他参考文献- 美味的状态(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 更好的模式和工具。
简而言之,它设计良好,维护良好,资金充足,提供庞大的第三方应用程序,受到大型组织的信任,更容易,更少样板等。