为什么要为你的Django应用程序公开API而使用其中一个?
答案 0 :(得分:201)
作为django-rest-framework的作者,我有一个明显的偏见;)但我希望 - 相当客观的意见是这样的:
无论如何,两者都很好。我可能会将Tastypie描述为为您提供开箱即用的合理默认设置,并且REST框架非常好地解耦和灵活。如果您计划在API中投入大量时间,我建议您浏览文档和文档。每个代码库,并试图让你感觉更适合你。
显然,它的自述文件中还有'Why TastyPie?'部分和'REST framework 3'。
另请参阅Daniel Greenfeld在2012年5月发表在Choosing an API framework for Django上的博客文章(值得注意的是,这仍然是在大型REST框架2.0发布之前的几个月)。
答案 1 :(得分:19)
两者都是不错的选择。
对于过滤器,tastypie更具开箱即用功能。如果你有一个公开模型的视图,你可以做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印象更深刻。 Tastypie尝试在settings.ADMINS
时通过电子邮件向DEBUG = False
发送电子邮件。当DEBUG = True
,the default error message is serialised JSON更难阅读时。
答案 2 :(得分:11)
编辑过时的答案,tastypie不再真正维护。如果必须选择一个框架来执行REST,请使用Django REST框架。
有关两者之间实际差异的概述,您应该阅读他们的文档。它们或多或少完整且非常成熟。
我个人倾向于尝试tastypie。它似乎更容易设置。它是由创建django-haystack的同一个人完成的,这是很棒的,根据django-packages,它比Django REST框架使用得更多。
答案 3 :(得分:5)
值得注意的是,因为这是第一次被要求DRF不断壮大。
这是两个在github上更活跃(在提交,明星,分叉和贡献者方面)
DRF具有OAuth 2支持和可浏览的API。
老实说,最后一个功能就是杀手。能够指出我所有的前端开发人员在可浏览的API上,当他们不确定某些东西是如何工作的时候说'去玩;找出'太棒了。
尤其是因为这意味着他们可以按照自己的条件理解它,并且知道API确实绝对地完成了“文档”所说的内容。在与API集成的世界中,只有这一事实才能使DRF成为可以胜任的框架。
答案 4 :(得分:1)
使用了两个,我喜欢(首选)关于Django Rest Framwork的一件事是与Django非常一致。
编写模型序列化器与编写模型表单非常相似。内置的通用视图与Django的HTML通用视图非常相似。
答案 5 :(得分:1)
嗯,Tastypie和DRF都是很好的选择。你只是不能出错。 (我从来没有在活塞上工作过;现在它已经不再是趋势,所以不会/不能对它发表评论。采取授予。)。 以我的拙见:应该选择你的(以及你的技术团队的)技能,知识和能力。而不是关于TastyPie和DRF提供的东西,除非你正在构建一些非常像Quora,Facebook或Google。
就个人而言,当我甚至不熟悉django的时候,我最终开始在TastyPie上工作。这一切都是有意义的,只知道REST和HTTP非常好,但几乎没有或几乎没有关于django的知识。因为我唯一的目的是立即构建RESTful API,这些API将在移动设备中使用。所以,如果你就像'我恰好在那个时候叫做django-new-bie',不要再考虑更多的吃SweetPie。
但是如果你有很多多年使用Django的经验,那么就可以深入了解并使用高级概念(如基于类的视图,表单,模型验证器,QuerySet,Manager和模型实例)他们如何彼此互动),**去寻找DRF。 ** DFR基于django基于类的视图。 DRF是惯用的django。就像你正在编写模型形式,验证器等一样。(好吧,惯用的django并不适合惯用的python。如果你是python专家但没有使用Django的经验那么你可能很难适应惯用的django哲学和那个问题DRF也是如此)。 DRF带有许多内置的魔术方法,就像django一样。如果你喜欢django神奇的方法和哲学** DRF **只适合你。
现在,只是回答确切的问题:
<强> Tastypie:强>
优点:
缺点:
<强> DRF:强>
缺点:
我个人在下一个项目中会使用什么?
现在,我不再是MAGIC和开箱即用功能的粉丝了。因为他们所有人都付出了巨大代价。 *假设我有所有选择并控制项目时间和预算,我会从像RESTLess(https://github.com/toastdriven/restless)(由TastyPie的创建者和django-haystack(http://haystacksearch.org/)创建的轻量级开始)。对于同样的事情,可能/明确地选择轻量级的Web框架,如 Flask。
但为什么呢? - 更易读,简单和易于管理的惯用python(又名pythonic)代码。虽然代码更多但最终提供了极大的灵活性和定制。
如果除了Django和TastyPie和DRF之外别无选择,该怎么办?
那么为什么你首先选择了DRF / TastyPie?
我希望,它会帮助你做出更好的决定。
其他参考资料 - 1. Tastypie状态(http://toastdriven.com/blog/2014/may/23/state-tastypie/) 2. django-tastypie和djangorestframework之间有什么区别? (What are the differences between django-tastypie and djangorestframework?)
答案 6 :(得分:1)
Django-tastypie不再由它的原始创作者维护,他创造了一个新的轻量级框架。
如果您愿意公开您的API,目前您应该将django-rest-framework与django一起使用。
大公司正在使用它。 django-rest-framework是django团队的核心成员,他获得资金来维护django-rest-framework。
django-rest-framework也有大量不断增长的第3个艺术套餐,这将帮助您更轻松地轻松构建API。
drf的某些部分也将合并到django中。
drf提供更好的模式和工具然后django-tastypie。
简而言之,它设计精良,维护良好,资金充足,提供庞大的第三方应用程序,受到大型组织的信任,比tastypie更容易,更少样板。