您为什么要使用另一个来揭露Django应用程序的API?

http://pypi.python.org/pypi/djangorestframework/

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

有帮助吗?

解决方案

作为Django-Rest-Framework的作者,我有明显的偏见;)但是我对此有希望的意见是:

Tastyypie

  • 正如Torsten指出的那样,您不会出现与很棒的窥视所写的东西一样出错 Django-haystack. 。从我在他们的邮件列表中看到的内容,Daniel Lindsey等人超级热心,Tastypie稳定,全面且有据可查
  • 擅长为您提供一系列明智的默认行为,并使其以这种风格非常容易地构建API。

Django休息框架

  • 让您浏览可浏览的自我描述的API。 (例如,请参阅 教程API。)能够直接在浏览器中与API进行导航和交互是很大的可用性胜利。
  • 试图在整个过程中保持与Django Idios的亲密关系 - 建立在Django的基于类的视图之上等等。
  • 我想认为,底层建筑的建筑非常好,脱钩等...

无论如何,两者都很好。我可能会将TastyPie描述为为您提供一套明智的默认设置,而REST框架则非常脱钩和灵活。如果您打算在API上投入大量时间,我建议您浏览每个文档和代码库,并试图获得更适合您的感觉。

显然,还有 “为什么tastypie?” 读书中的部分, “休息框架3”.

另请参见Daniel Greenfeld的博客文章 为Django选择API框架, ,从2012年5月开始(值得注意的是,这仍然是Big Rest Framework 2.0发布的几个月)。

还有几个线程在reddit上,人们问同样的问题, 2013年12月2013年7月.

其他提示

两者都是不错的选择。

对于过滤器,TastyPie是更强大的开箱即用。如果您有揭示模型的视图,则可以执行Django风格的不平等过滤器:

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

或查询:

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

这些可以使用DjangorestFramework,但是您必须为每个型号编写自定义过滤器。

对于Trackbacks,Django-Rest Framework给我留下了深刻的印象。 Tastypie试图发送电子邮件 settings.ADMINS 在例外时间 DEBUG = False. 。什么时候 DEBUG = True, 默认错误消息是序列化的JSON, ,这很难阅读。

编辑 过时的答案,TastyPie不再真正维护了。如果您必须选择一个框架进行休息,请使用Django Rest框架。

有关他们俩之间实际差异的概述,您应该阅读他们的文档。它们或多或少是完整的,而且很成熟。

我个人倾向于品尝。似乎更容易设置它。它是由创造的人完成的 Django-haystack 这很棒,根据 Django包装 它比Django Rest框架所使用的更多。

值得注意的是,自从首次被问到DRF已经从力量到力量。

这是两者在github上更为活跃的(在提交,恒星,叉子和贡献者方面)

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

老实说,最后一个功能是杀手。当我不确定某件事是如何工作并说'去玩时,能够将我所有的前端开发人员指向可浏览的API;找出'很棒。

尤其是因为这意味着他们可以按照自己的条款理解它,并且知道API确实绝对可以做“文档”所说的事情。在与API集成的世界中,仅此事实就使DRF成为击败的框架。

使用两者,我喜欢(首选)关于django休息的一件事是与django非常一致。

编写模型序列化器与编写模型形式非常相似。内置的通用视图与Django对HTML的通用视图非常相似。

好吧,Tastypie和DRF都是绝佳的选择。你很简单 不能 他们中的任何一个都出错。 (我从来没有在活塞上工作过;现在几天就不再流行了,所以不会 /不能评论它。理所当然。)。在我的愚见: 应该对您(以及您的科技团队)的技能,知识和能力做出选择。 除非您正在构建Quora,Facebook或Google等真正大的东西,否则您而不是tastypie和DRF提供的内容。

就我个人而言,当我什至不正确地知道Django的时候,我最终首先开始在Tastypie上工作。当时这一切都是有道理的,只有非常了解休息和HTTP,但几乎没有关于Django的知识。因为我唯一的意图是在移动设备中立即构建宁静的API。因此,如果您就像“我碰巧当时被称为django new-bie”, 不要以为tastypie了。

但是如果你有很多 在与Django合作的经验中,内外了解它,并且使用高级概念(例如基于类的视图,表单,模型验证器,QuerySet,Manager和Model实例以及它们如何相互作用),非常舒适。 ** DFR是Django基于类的视图的基础。 DRF是惯用的django。就像您正在编写模型表格,验证者等(嗯,惯用的django都不是与惯用的python一样。如果您是Python专家,但没有Django的经验,那么您最初可能会很难适应惯用的Django哲学,并且适合那也很重要的DRF)。 DRF像Django一样带有许多内置的魔法方法。如果您喜欢Django Magical方法和哲学** DRF **仅适合您。

现在,只是为了回答一个确切的问题:

tastypie:

优点:

  1. 容易开始并提供基本功能OOB(开箱即用)
  2. 大多数情况下,您不会处理高级Django概念,例如CBV,表格等
  3. 更可读的代码和更少的魔术!
  4. 如果您的模型是非型号,请继续前进。

缺点:

  1. 并非严格遵循惯用的django(心灵python和Django的哲学是完全不同的)
  2. 一旦您走大可能很难自定义API
  3. 没有o-aut

DRF:

  1. 关注惯用的django。 (如果您知道Django Inside Out,并且对CBV,表格等非常舒适,那么毫无疑问)
  2. 使用ModelViewSets提供开箱即用的REST功能。同时,使用CustomSerializer,Apiview,GenericViews等为自定义提供了更大的控制权。
  3. 更好的身份验证。更容易编写自定义权限类。与第三方图书馆和OAuth一起工作,非常容易工作,非常容易地工作。 django-rest-auth值得一提的是用于验证/社会授权/注册的图书馆。 ((https://github.com/tivix/django-rest-auth)

缺点:

  1. 如果您不太了解Django,请不要去做。
  2. 魔法!一段时间很难理解魔术。因为它被写在Django的CBV之上,而本质上也很复杂。 ((https://code.djangoproject.com/ticket/6735)
  3. 具有陡峭的学习曲线。

我个人在下一个项目中会使用什么?

  • 现在,我不再是魔术和盒子外功能的粉丝。因为它们的成本很高。 *假设我对项目时间和预算有所有选择和控制https://github.com/toastdriven/restless)(由Tastypie和Django-Haystack的创建者创建(http://haystacksearch.org/)。而且,也可能/明确选择轻巧的网络框架 烧瓶。

  • 但为什么? - 更可读,简单且可管理的惯用python(又名Pythonic)代码。尽管更多的代码,但最终提供了极大的灵活性和自定义。

    • 显式比隐式更好。
    • 简单胜于复杂。
    • 复杂胜于复杂。
    • 公寓胜于嵌套。
    • 稀疏胜于密集。
    • 可读性计数。
    • 特殊情况不足以违反规则。

如果您只有Django以及Tastypie和DRF的一项选择,该怎么办?

  • 现在,我非常了解Django,我将与** DRF一起去。 **
  • 为什么? - 惯用的djagno! (虽然我不喜欢)。 Better Oauth和第三方集成(我的最爱是Django-Rest-auth)。

那么,为什么您首先选择DRF/TastyPie?

  • 通常,我曾与初创公司和小公司合作,这些公司的预算和时间紧张。并需要快速和可用的东西。 Django非常好。 (我并不是说Django不可扩展。有Quora,Disquss,YouTube等网站上运行。但是,所有需要时间,而更多的技能则需要更多)

我希望,这将帮助您做出更好的决定。

其他参考 -1. Tastypie状态(http://toastdriven.com/blog/2014/may/23/state-tastypie/)2。django-tastypie和djangorestframework之间有什么区别? ((Django-Tastypie和Djangorestframework之间有什么区别?)

Django-Tastypie不再由它的原始创造者维护,他创建了一个新的轻巧框架。

目前,如果您愿意暴露API,则应使用Django使用Django-Rest-Framework。

大公司正在使用它。 Django-Rest-Framework是Django团队的核心成员,他获得了维持Django-Rest框架的资金。

Django-Rest-Framework也有大量增长的第三个Arty套餐,这将帮助您更轻松地使用较少的麻烦来构建API。

DRF的某些部分也将合并为Django。

DRF提供了比Django-Tastypie更好的模式和工具。

简而言之,它的设计精良,维护良好,资助,提供了大型的第三方应用程序,受到大型组织的信任,更轻松,更少的样板等。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top