web-dev-qa-db-ja.com

Django-tastypieとdjangorestframeworkの違いは何ですか?

Django=アプリのAPIを公開するために、なぜあなたはもう一方を使用するのでしょうか?

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

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

151
coffee-grinder

Django-rest-frameworkの作者として、私は明らかな偏見を持っています;)が、これについての私の希望する公平に客観的な意見は次のようなものです:

おいしいパイ

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

Django RESTフレームワーク

  • HTMLブラウズ可能な自己記述型APIを提供します。 (EG、 チュートリアルAPI を参照してください。)ブラウザーでAPIを直接ナビゲートして対話できることは、ユーザビリティの大きな勝利です。
  • Djangoイディオム全体を通して-Djangoのクラスベースのビューなどの上に構築されています...) )
  • 私は、基礎となるアーキテクチャがかなりうまく構築され、分離されているなどと思いたいです...

いずれにせよ、両方とも良いです。 Tastypieは、すぐに使えるデフォルトの適切なセットを提供し、RESTフレームワークは非常にうまく分離され、柔軟であると見なすでしょう。 APIについては、それぞれのドキュメントとコードベースを参照し、より自分に合った感触を得ることをお勧めします。

もちろん、READMEの 'Why TastyPie?' セクションと 'REST framework 3' もあります。

Daniel Greenfeldのブログ投稿 Django用のAPIフレームワークの選択 、2012年5月から(これは大きなREST framework 2.0リリースのまだ数か月前であったことに注意してください)。

2013年12月2013年7月 から、この同じ質問をする人々とのRedditのスレッドもいくつかあります。

202
Tom Christie

両方とも良い選択です。

フィルターの場合、すぐに使用できる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.ADMINSDEBUG = False。いつ DEBUG = Trueデフォルトのエラーメッセージはシリアル化されたJSONです 。これは読みにくいです。

19
Wilfred Hughes

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

両者の実際の違いに関する概要については、ドキュメントを参照してください。それらは多かれ少なかれ完全であり、かなり成熟しています。

私は個人的にはおいしいのが好きです。設定は簡単だと思われます。 Django-haystack を作成したのと同じ人々から行われました。これはすばらしく、 Django-packages によれば、Django = RESTフレームワーク。

12

これが最初に尋ねられて以来、DRFが力強くなってきたことは注目に値します。

Githubの2つのうち、よりアクティブです(コミット、スター、フォーク、貢献者の両方の面で)

DRFにはOAuth 2のサポートとブラウズ可能なAPIがあります。

正直なところ、最後の機能がキラーです。フロントエンドの開発者全員が、何かがどのように機能するのかわからないときにブラウジング可能なAPIを指すことができ、「プレイしてください。見つける」は素晴らしい。

とりわけ、それは彼らが自分の用語でそれを理解し、APIが本当に、間違いなく、絶対に「ドキュメント」が言うことをすることを知っていることを意味するからです。 APIとの統合の世界では、その事実だけでDRFが最高のフレームワークになっています。

5
Tom Manterfield

Django-tastypieは元の作成者によって維持されなくなり、彼自身の新しい軽量フレームワークを作成しました。

現在、APIを公開する場合は、DjangoでDjango-rest-frameworkを使用する必要があります。

大企業がそれを使用しています。 Django-rest-frameworkはDjangoチームのコアメンバーであり、Django-rest-frameworkを維持するための資金を得ています。

Django-rest-frameworkには、成長を続ける3番目の芸術的なパッケージも非常に多くあります。これにより、より簡単にAPIをより簡単に構築できます。

Drfの一部もDjango適切にマージされます。

drfは、Django-tastypieよりも優れたパターンとツールを提供します。

要するに、それはうまく設計され、よく維持され、資金提供され、巨大なサードパーティのアプリを提供し、大規模な組織から信頼され、タスティーパイよりも簡単で定型的なものなどです。

1
auvipy

まあ、TastypieとDRFはどちらも素晴らしい選択肢です。あなたは単純にどちらでも間違ってはいけません。 (私はピストンの仕事をしたことはありません。その日はもうトレンドではないので、コメントすることもコメントすることもできません。許可されています。)私の謙虚な意見では:あなた(そしてあなたの技術チーム)のスキル、知識、能力に基づいて選択する必要があります Quora、Facebook、Googleのように本当に大きい。

個人的には、Djangoを適切に知らないうちに、TastyPieで最初に作業を始めました。当時はすべて理にかなっており、RESTとHTTPを非常によく知っていましたが、Djangoについてほとんどまたはまったく知識がありませんでした。私の唯一の意図は、モバイルデバイスで消費されるRESTful APIをすぐに構築することだったからです。もしあなたが「たまたまDjango-new-bieと呼ばれている」のようなら、TastyPieにこれ以上行くとは思わないでください。

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

さて、正確な質問に答えるためだけに:

Tastypie:

利点:

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

欠点:

  1. イディオムDjangoに厳密に従わない(よく考えてpythonとDjangoの哲学はまったく異なる)
  2. 大きくなったらAPIをカスタマイズするのはおそらく少し難しい
  3. O-Authなし

DRF:

  1. 慣用的なDjangoをフォローしてください。 (Djangoを裏返しに知っていて、CBVやFormsなどに非常に慣れているなら、間違いなくそれを選択してください)
  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. 魔法!魔法を理解するのは非常に難しい時間です。 DjangoのCBVの上に書かれているため、本質的に非常に複雑です。 ( https://code.djangoproject.com/ticket/6735
  3. 急な学習曲線を持っています。

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

  • 今、私はもはやMAGICおよびOut-of-box機能のファンではありません。なぜなら、それらはすべて*多大な費用がかかるからです。 *すべての選択肢があり、プロジェクトの時間と予算を制御できると仮定して、RESTLESS( https://github.com/toastdriven/restless )(TastyPieの作成者によって作成された)およびDjango-haystack( http://haystacksearch.org/ ))。そして同じ問題のために、おそらく/間違いなくFlask。のような軽量のWebフレームワークを選択してください。

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

    • 明示的は暗黙的よりも優れています。
    • 単純なものは複雑なものよりも優れています。
    • 複雑は複雑よりも優れています。
    • ネストはフラットよりも優れています。
    • スパースは、デンスよりも優れています。
    • 可読性が重要です。
    • 特別なケースは、規則を破るほど特別ではありません。

DjangoおよびTastyPieとDRFのいずれかしか選択できない場合はどうでしょうか?

  • さて、Djangoをかなりよく知っているので、** DRFを使用します。 **
  • どうして? -慣用的なジャグノ! (しかし、私はそれを愛していません)。 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
Jadav Bheda

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

モデルシリアライザーの記述は、モデルフォームの記述に非常に似ています。組み込みの汎用ビューは、DjangoのHTMLの汎用ビューに非常に似ています。

1
wobbily_col