Answers:
作为django-rest-framework的作者,我有一个明显的偏见;),但是我对此的希望但客观的看法是:
无论如何,两者都是好的。我可能会把Tastypie的特征描述为给您开箱即用的一组明智的默认值,而REST框架则具有很好的解耦性和灵活性。如果您打算在API上花费大量时间,建议您浏览每个文档和文档的代码库,并尝试获得更适合您的感觉。
显然,还有“为什么吃美味的馅饼?” README和“ REST framework 3”。
另请参见Daniel Greenfeld在2012年5月发布的关于为Django选择API框架的博客文章(值得一提的是,这还需要在大型REST框架2.0版本发布前几个月)。
两者都是不错的选择。
对于过滤器,即兴功能更强大。如果您有一个暴露模型的视图,则可以执行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给我留下了深刻的印象。当时,Tastypie尝试通过电子邮件发送settings.ADMINS
例外情况DEBUG = False
。如果为DEBUG = True
,则默认错误消息是序列化的JSON,很难读取。
DjangoFilterBackend
REST框架在此处提供的提供的内容即可:django-rest-framework.org/api-guide/filtering#api-guide
编辑过时的答案,好吃不再真正保持了。如果必须选择执行REST的框架,请使用Django REST框架。
有关两者之间实际差异的概述,请阅读它们的文档。它们或多或少都完整且相当成熟。
我个人比较喜欢吃。设置起来似乎比较容易。它是由创建django-haystack的人完成的,它很棒,并且根据django-packages,它的使用比Django REST框架更多。
值得注意的是,自从第一次提出要求以来,DRF的实力就不断增强。
它是github上两者中最活跃的(无论是提交,星标,分叉和贡献者)
DRF具有OAuth 2支持和可浏览的API。
老实说,我的最后一个特点是杀手.。当我不确定所有事物的工作原理并说“开始游戏;可以玩”时,可以将我所有的前端开发人员指向可浏览的API。找出来是太棒了。
尤其重要的是,因为这意味着他们必须以自己的方式理解它,并且知道API确实,绝对地,完全按照“文档”中的说明进行操作。在与API集成的世界中,仅凭这一事实就使DRF成为了必不可少的框架。
django-tastypie-swagger
缩小了差距?
好吧,Tastypie和DRF都是很好的选择。您根本不会出错。(我从来没有在活塞上工作过;它现在已经不再趋于流行了,所以不会/无法对此发表评论。这是理所当然的。)在我的拙见中:应根据您(以及您的技术团队)的技能,知识和能力做出选择。而不是根据TastyPie和DRF提供的功能,除非偏离路线,否则您将构建诸如Quora,Facebook或Google之类的真正大公司。
就个人而言,当我什至不了解django的时候,我最终开始首先在DeliciousPie上工作。那时,这一切都是有道理的,只非常了解REST和HTTP,却几乎没有或几乎没有有关django的知识。因为我的唯一意图是立即构建要在移动设备中使用的RESTful API。因此,如果您就像“我碰巧当时被称为django-new-bie”一样,请不要认为TastePie会更多。
但是如果你有很多年使用Django的经验,请完全了解它,并且可以使用高级概念(例如基于类的视图,表单,模型验证器,QuerySet,管理器和模型实例以及它们之间如何交互)非常自在,* *去DRF。** DFR基于django基于类的视图。DRF是惯用的django。就像您正在编写模型表单,验证器等。(好吧,惯用的django与惯用的python相距甚远。如果您是python的专家,但没有Django的经验,那么您最初可能很难适应惯用的django哲学,对于DRF也是如此)。DRF带有许多内置的魔术方法,就像django一样。如果您喜欢django的神奇方法和哲学,** DRF **仅适合您。
现在,只是要回答确切的问题:
好吃的
优点:
缺点:
DRF:
缺点:
我个人将在下一个项目中使用什么?
现在,我不再是MAGIC和开箱即用功能的粉丝。因为它们都是以*巨大的代价而来的。*假设我可以选择所有项目并控制项目时间和预算,那么我将从像RESTLess(https://github.com/toastdriven/restless)(由TastyPie和django-haystack(http: //haystacksearch.org/))。对于同一件事,可能/一定要选择像Flask这样的轻量级Web框架。
但为什么?-更具可读性,简单性和可管理性的惯用python(aka pythonic)代码。虽然有更多的代码,但最终提供了极大的灵活性和定制性。
如果您只能选择Django以及DeliciousPie和DRF之一,该怎么办?
那为什么首先选择DRF / TastyPie?
希望它将帮助您做出更好的决定。
其他参考资料-1 . Deliciouspie的状态(http://toastdriven.com/blog/2014/may/23/state-tastypie/)2 . django-tastypie和djangorestframework有什么区别?(django-tastypie和djangorestframework有什么区别?)
两者都使用过后,我喜欢(首选)有关Django Rest Framwork的一件事是,它与Django非常一致。
编写模型序列化器与编写模型表单非常相似。内置的通用视图与Django的HTML通用视图非常相似。
Django-tastypie不再由其原始创建者维护,他创建了自己的新的轻量级框架。
目前,如果您愿意公开自己的API,则应将django-rest-framework与django结合使用。
大型公司正在使用它。django-rest-framework是django团队的核心成员,他获得了维护django-rest-framework的资金。
django-rest-framework也拥有大量不断增长的第3 arty软件包,它们将帮助您以更少的麻烦来更轻松地构建API。
drf的某些部分也将在django中合并。
drf比django-tastypie提供了更好的模式和工具。
简而言之,它经过精心设计,维护良好,资金雄厚,可提供庞大的第三方应用程序,受到大型组织的信任,并且比上榜更容易,更少样板。