【发布时间】:2011-11-10 07:48:24
【问题描述】:
【问题讨论】:
标签: django rest django-rest-framework
【问题讨论】:
标签: django rest django-rest-framework
作为 django-rest-framework 的作者,我有一个明显的偏见;)但我对此的希望是相当客观的看法是这样的:
无论如何,两者都很好。我可能会将 Tastypie 描述为开箱即用地为您提供一组合理的默认值,而 REST 框架则具有非常好的解耦和灵活性。如果您打算在 API 上投入大量时间,我强烈建议您浏览每个文档和代码库,并尝试了解哪个更适合您。
显然,它的 README 中还有 'Why TastyPie?' 部分和 'REST framework 3'。
另请参阅 Daniel Greenfeld 从 2012 年 5 月起在 Choosing an API framework for Django 上的博客文章(值得注意的是,这距离大型 REST 框架 2.0 发布还有几个月的时间)。
【讨论】:
两者都是不错的选择。
对于过滤器,sauthenticpie 开箱即用的功能更强大。如果你有一个暴露模型的视图,你可以做 Django 风格的不等式过滤器:
http://www.example.com/api/person?age__gt=30
或 OR 查询:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
这些在 djangorestframework 中是可能的,但您必须为每个模型编写自定义过滤器。
对于回溯,django-rest-framework 给我留下了深刻的印象。当DEBUG = False 出现异常时,Tastypie 会尝试通过电子邮件发送settings.ADMINS。当DEBUG = True,the default error message is serialised JSON,哪个更难读。
【讨论】:
DjangoFilterBackend,如 REST 框架在此处记录的那样:django-rest-framework.org/api-guide/filtering#api-guide
编辑 过时的答案,tasticpie 不再真正维护了。如果您必须选择一个框架来做 REST,请使用 Django REST 框架。
要了解它们之间的实际差异,您应该阅读它们的文档。它们都或多或少完整且相当成熟。
不过,我个人倾向于吃美味派。设置它似乎更容易。它是由创建 django-haystack 的同一个人完成的,这很棒,根据 django-packages,它比 Django REST 框架使用得更多。
【讨论】:
值得注意的是,自从第一次提出这个问题以来,DRF 已经越来越强大。
它是 github 上两者中更活跃的(无论是在提交、star、fork 和贡献者方面)
DRF 支持 OAuth 2 和可浏览的 API。
老实说,最后一个功能是我的杀手锏。当我的所有前端开发人员不确定某些东西如何工作并说“开始玩;发现'太棒了。
尤其是因为这意味着他们可以按照自己的方式理解它,并且知道 API 确实、绝对、绝对地按照“文档”所说的那样做。在与 API 集成的世界中,仅这一点就使 DRF 成为了被击败的框架。
【讨论】:
django-tastypie-swagger 是否缩小了这个差距?
嗯,Tastypie 和 DRF 都是很好的选择。您只是不能对其中任何一个出错。 (我从来没有在活塞上工作过;而且它现在不再流行了,所以不会/不能评论它。理所当然。)。 以我的拙见:应该根据您(和您的技术团队)的技能、知识和能力做出选择。 而不是 TastyPie 和 DRF 提供的东西,除非您正在构建一些非常大的东西,例如Quora、Facebook 或 Google。
就个人而言,我最终开始在 TastyPie 上工作,当时我什至不了解 django。那时一切都说得通,只是非常了解 REST 和 HTTP,但对 django 几乎一无所知或知之甚少。因为我的唯一目的是立即构建将在移动设备中使用的 RESTful API。因此,如果您只是喜欢“我当时恰好被称为 django-new-bie”,不要想太多,去 TastyPie。
但是,如果您有很多 年 使用 Django 的经验,对它了如指掌,并且非常擅长使用高级概念(如基于类的视图、表单、模型验证器、查询集、管理器和模型实例以及他们如何相互作用),**去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/) 的创建者创建)。对于同样的问题,可能/肯定选择轻量级 Web 框架,如 Flask。
但是为什么呢? - 更易读、更简单、更易于管理的惯用 python(又名 pythonic)代码。虽然代码更多,但最终提供了极大的灵活性和自定义性。
如果您别无选择,只能选择 Django 以及 TastyPie 和 DRF 中的一个?
那你当初为什么选择 DRF/TastyPie?
希望它能帮助您做出更好的决定。
其他参考资料 - 1. 美味之州 (http://toastdriven.com/blog/2014/may/23/state-tastypie/) 2、django-tastypie和djangorestframework有什么区别? (What are the differences between django-tastypie and djangorestframework?)
【讨论】:
两者都使用过,我喜欢(首选)Django Rest 框架的一件事是它与 Django 非常一致。
编写模型序列化程序与编写模型表单非常相似。内置的通用视图与 Django 的 HTML 通用视图非常相似。
【讨论】:
Django-tastypie 不再由它的原始创建者维护,他创建了自己的新轻量级框架。
如果你愿意公开你的 API,目前你应该使用 django-rest-framework 和 django。
大公司正在使用它。 django-rest-framework 是 django 团队的核心成员,他获得资金来维护 django-rest-framework。
django-rest-framework 也有大量不断增长的 3rd arty 包,这将帮助您更轻松地构建 API,减少麻烦。
drf 的某些部分也将被合并到 django 中。
drf 提供比 django-tastypie 更好的模式和工具。
简而言之,它设计精良、维护良好、资金充足、提供庞大的第 3 方应用程序、受到大型组织的信任、更容易和更少的样板等等。
【讨论】: