django-tastypieとdjangorestframeworkの違いは何ですか?[閉まっている]


157

DjangoアプリのAPIを公開するために、なぜどちらを使用するのですか?

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

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

回答:


206

django-rest-frameworkの作者として、私は明らかな偏見を持っています;)しかし、これについての私のうまくいけば客観的な意見は次のようなものです:

おいしいパイ

  • Torstenが指摘したように、素晴らしいdjango-haystackと同じのぞき見で書かれたもので、それほど問題はないでしょう。彼らのメーリングリストで私が見たものから、ダニエル・リンゼイらはとても役に立ち、Tastypieは安定していて包括的で、十分に文書化されています
  • デフォルトの動作の賢明なセットを提供し、そのスタイルでのAPIの構築を非常に簡単にすることに優れています。

Django RESTフレームワーク

  • HTMLで参照可能な自己記述型APIを提供します。(例えば、チュートリアルAPIを参照してください。)ブラウザーでAPIを直接ナビゲートおよび操作できることは、使いやすさの大きな利点です。
  • 全体を通してDjangoイディオムに近づこうとします-Djangoのクラスベースのビューなどの上に構築されています...
  • 私は、基盤となるアーキテクチャがかなりうまく構築され、分離されていると思います...

いずれにしても、どちらも良いです。おそらく、Tastypieはすぐに使えるデフォルトの賢明なセットを提供し、RESTフレームワークは非常にうまく分離されて柔軟であることを特徴としています。APIに多くの時間を費やすことを計画している場合は、それぞれのドキュメントとコードベースを参照して、自分に合った感覚を得ることをお勧めします。

もちろん、「なぜTastyPieなのか」もあります。そのセクションはREADMEであり、「RESTフレームワーク3」です。

2012年5月からのDjangoのAPIフレームワークの選択に関するDaniel Greenfeldのブログ投稿も参照してください(これは、大きなRESTフレームワーク2.0がリリースされる数か月前のことです)。

またから、この同じ質問をする人々とのReddit上のスレッドのカップル2013年12月2013年7月


7
ところで、私たちはメジャープロジェクトにDjango-rest-frameworkを使用してきました。私は一週間早くtastypieを試乗しましたが、DRFを使うことについて後悔はありません。ドキュメントは残念ながらコードやフレームワーク自体と同等ではありませんが、それ以外は純粋な至福です。
ベンロバーツ

ベン、ありがとう。そしてうん、あなたのポイント再。ドキュメントは間違いなく公正です。それに対処する予定です!
トムクリスティ

「django-rest-framework上のDjangoConからの私の稲妻トーク」ビデオリンクは死んでいます!
ミュータント

1
@ミュータント-おかげで、djangocon.eu 2011のサイトは死んでしまいましたが、blip.tvのビデオに直接リンクしています。
トムクリスティー

@TomChristie blip.tvへのリンクは死んでいます!で、これは正しいビデオ?
kevins 2014年

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デフォルトのエラーメッセージはシリアル化されたJSONであり、読みにくくなります。


8
Django REST Frameworkでは、このためのカスタムフィルターを作成する必要はありません。DjangoFilterBackendここでRESTフレームワークによって文書化されているように、提供されているものを使用する必要があります:django-rest-framework.org/api-guide/filtering#api-guide
monokrome

13

EDIT時代遅れの答え、tastypieはもはや実際には維持されていません。RESTを実行するフレームワークを選択する必要がある場合は、Django RESTフレームワークを使用してください。

両者の実際の違いに関する概要については、ドキュメントを読む必要があります。彼らは多かれ少なかれ完全であり、かなり成熟しています。

個人的には美味しいけど。簡単に設定できるようです。それは素晴らしいdjango-haystackを作成した人たちから行われ、django-packagesによれば、Django RESTフレームワークよりも多く使用されています


2
ドキュメンテーションは、「両方の実際の違いについての概要」としてはまったく良くありません。
モノクローム2014

私はこれを-1にしています。これは、かなり古くなっており、今では事実上の誤りがあるためです。DRFはTastyPieよりもはるかに多く使用されています。そうは言っても、作者はdjango-packagesへのリンクを含めています。これは質の高い答えです。
texnic '20年

1
Githubの歴史と2018年に解決された問題に基づくと、TastyPieは確かにまだ維持されているようです。
スシル

Tastypieはdjango 1.11でサポートされています。これは、将来のプロジェクトの検討に適しています。django-tastypie.readthedocs.io/en/latest/...
elsadek

5

これは最初に尋ねられて以来、DRFは強さから強さへと進んだことは注目に値します。

github上の2つの中でよりアクティブです(コミット、スター、フォーク、コントリビューターに関して)

DRFはOAuth 2のサポートとブラウズ可能なAPIを備えています。

正直なところ、最後の機能はキラーです。すべてのフロントエンドの開発者が、何かがどのように機能するかわからない場合に、参照可能なAPIを指すようにして、「Go play; 見つける」は素晴らしいです。

それは、彼らが自分の言葉でそれを理解し、APIが「ドキュメント」に書かれていることを本当に確実に確実に実行することを知っていることを意味するからです。APIとの統合の世界では、その事実だけでDRFが優れたフレームワークになります。


django-tastypie-swaggerこのギャップを縮めるかしら?
Victor Sergienko、2015年

2

まあ、TastypieとDRFはどちらも優れた選択肢です。あなたはそれらのどちらかで間違って行くことはできません。(私はこれまでピストンに取り組んだことがありません。そして、今日はそのような傾向がなくなっているので、コメントしない/コメントできません。私の謙虚な意見では、選択はあなた(そしてあなたの技術チーム)のスキル、知識、能力に基づいて行われるべきです。TastyPieとDRFが提供するものではなく、オフコースでない限り、Quora、Facebook、Googleなどの非常に大きなものを構築します。

個人的に、私はジャンゴさえ適切に知らなかった時に、最初にTastyPieでの作業を始めました。当時は、RESTとHTTPを非常によく知っているだけで、djangoに関する知識がほとんどないか、ほとんどありませんでした。私の唯一の意図は、モバイルデバイスで使用されるRESTful APIをすぐに作成することでした。したがって、「私がたまたまdjango-new-bieと呼ばれている」のような場合は、TastyPieをこれ以上使用しないください。

しかし、Djangoでの作業に長年の経験がある場合、高度な概念(クラスベースのビュー、フォーム、モデルバリデーター、クエリセット、マネージャー、モデルインスタンス、およびそれらすべてが互いにどのように相互作用するかなど)を使用して、Djangoを完全に理解し、非常に快適です。* * DRFに進みます。** DFRは、djangoのクラスベースのビューに基づいています。DRFは慣用的なdjangoです。モデルのフォームやバリデーターなどを書いているようなものです(まあ、慣用的なdjangoは慣用的なpythonに近いところはありません。Pythonの専門家でDjangoの経験がない場合は、最初に慣用的なdjangoの哲学に慣れるのに苦労するかもしれません。 DRFも同様です)。DRFには、djangoと同様に、多くの組み込みのマジックメソッドが付属しています。あなたがジャンゴの魔法の方法と哲学を愛しているなら** DRF **はあなたのためだけです。

今、ちょうど正確な質問に答えるために:

Tastypie:

利点:

  1. 簡単に始められ、基本機能OOBを提供します(そのまま)
  2. ほとんどの場合、CBVやフォームなどの高度なDjangoの概念は扱いません。
  3. より読みやすいコードと少ない魔法!
  4. モデルが非ORMの場合は、それを選択してください。

短所:

  1. 慣用的なDjangoに厳密に従っていません(Pythonとdjangoの哲学はまったく異なります)
  2. 大きくなるとAPIをカスタマイズするのは少し難しいでしょう
  3. O-Authなし

DRF:

  1. 慣用的なdjangoに従ってください。(あなたがジャンゴを完全に知っていて、CBV、フォームなどに非常に慣れているなら、間違いなくそれを試してください)
  2. ModelViewSetsを使用してすぐに使えるREST機能を提供します。同時に、CustomSerializer、APIView、GenericViewsなどを使用してカスタマイズをより詳細に制御できます。
  3. より良い認証。カスタムのアクセス許可クラスを簡単に記述できます。サードパーティのライブラリやOAuthと連携させるには、非常にうまく機能し、重要なことには非常に簡単です。DJANGO-REST-AUTHは、Auth / SocialAuthentication / RegistrationのLIBRARYについて言及する価値があります。(https://github.com/Tivix/django-rest-auth

短所:

  1. Djangoをよく知らないのなら、これに行かないでください。
  2. マジック!魔法を理解するのが非常に難しいことがあります。それは、ジャンゴのCBVの上に書かれているからです。(https://code.djangoproject.com/ticket/6735
  3. 急な学習曲線があります。

個人的には、次のプロジェクトで何を使用しますか?

  • 今では、MAGICやすぐに使える機能のファンではなくなりました。すべてが*大きなコストで提供されるためです。*プロジェクトの時間と予算をすべて選択して制御できると想定すると、RESTLess(https://github.com/toastdriven/restless)(TastyPieとdjango-haystackの作成者が作成したhttphttp: //haystacksearch.org/))。同じ問題については、おそらく/確実に、Flaskのような軽量のWebフレームワークを選択してください

  • しかし、なぜ?-より読みやすく、シンプルで管理しやすい慣用的なpython(別名pythonic)コード。コードは増えますが、最終的には優れた柔軟性とカスタマイズが提供されます。

    • 明示的は暗黙的よりも優れています。
    • シンプルは複雑よりも優れています。
    • 複雑は複雑よりも優れています。
    • ネストよりもフラットの方が適しています。
    • 疎は密よりも優れています。
    • 読みやすさが重要です。
    • 特別なケースは、ルールを破るほど特別なものではありません。

DjangoとTastyPieとDRFのどちらか1つしか選択できない場合はどうなりますか?

  • Djangoをある程度理解しているので、** DRFを使用します。**
  • どうして?-慣用的なdjagno!(私はそれが好きではありません)。OAuthとサードパーティの統合の改善(django-rest-authが私のお気に入りです)。

では、なぜ最初にDRF / TastyPieを選択したのですか?

  • 主に私は、予算と時間に厳しい新興企業や小規模企業と仕事をしてきました。迅速で使いやすいものを提供する必要があります。Djangoはこの目的を非常によく果たします。(私はdjangoがスケーラブルではないと言っているわけではありません。Quora、Disquss、YoutubeなどのWebサイトが実行されています。ただし、すべてに平均的なスキル以上の時間が必要です)

私はそれがあなたがより良い決断をするのを助けることを願っています。

その他の参考資料 -1. Tastypieの状態(http://toastdriven.com/blog/2014/may/23/state-tastypie/)2 . django-tastypieとdjangorestframeworkの違いは何ですか?(django-tastypieとdjangorestframeworkの違いは何ですか?


1

両方を使用したことで、Django Rest Framworkについて私が(推奨)気に入ったことの1つは、Djangoと非常に一貫していることです。

モデルシリアライザーの作成は、モデルフォームの作成と非常に似ています。組み込みのジェネリックビューは、DjangoのHTMLのジェネリックビューとよく似ています。


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よりも優れたパターンとツールを提供します。

一言で言えば、それはよく設計され、よく維持され、資金があり、巨大なサードパーティアプリを提供し、大規模な組織から信頼されており、おいしいよりも簡単で定型的ではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.