Warum sollten Sie eine übereinander verwenden, um eine API für Ihre Django App bereitzustellen?
Als Autor des Django-Rest-Frameworks habe ich eine offensichtliche Voreingenommenheit;), aber meine hoffentlich ziemlich objektive Meinung dazu ist so etwas wie:
In jedem Fall sind beide gut. Ich würde Tastypie wahrscheinlich so charakterisieren, dass es Ihnen eine vernünftige Reihe von Standardeinstellungen bietet, und das REST Framework als sehr gut entkoppelt und flexibel. Wenn Sie vorhaben, viel Zeit in die API zu investieren, würde ich auf jeden Fall empfehlen, die Dokumente und die Codebasis zu durchsuchen und ein Gefühl dafür zu bekommen, welches für Sie besser geeignet ist.
Natürlich gibt es auch den Abschnitt 'Why TastyPie?' in der README-Datei und das 'REST-Framework 3' .
Siehe auch Daniel Greenfelds Blogbeitrag über Auswählen eines API-Frameworks für Django ab Mai 2012 (Bemerkenswert ist, dass dies noch einige Monate vor dem großen REST Framework 2.0 Release).
Auch ein paar Reddit-Threads mit Leuten, die dieselbe Frage stellen, vom Dezember 2013 und Juli 2013 .
Beides ist eine gute Wahl.
Bei Filtern ist tastypie sofort einsatzbereit. Wenn Sie eine Ansicht haben, die ein Modell verfügbar macht, können Sie Ungleichungsfilter im Django-Stil anwenden:
http://www.example.com/api/person?age__gt=30
oder OR Abfragen:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
diese sind mit djangorestframework möglich, Sie müssen jedoch benutzerdefinierte Filter für jedes Modell schreiben.
Für Rückverfolgungen bin ich mehr mit Django-Rest-Framework beeindruckt. Tastypie versucht, eine E-Mail an settings.ADMINS
bei Ausnahmen, wenn DEBUG = False
. Wann DEBUG = True
, die Standardfehlermeldung ist serialisiertes JSON , das schwerer zu lesen ist.
[~ # ~] edit [~ # ~] Veraltete Antwort, Tastypie wird nicht mehr wirklich gepflegt. Verwenden Sie das Django REST Framework, wenn Sie ein Framework für REST auswählen müssen.
Um einen Überblick über die tatsächlichen Unterschiede zwischen beiden zu erhalten, sollten Sie deren Dokumentation lesen. Sie sind beide mehr oder weniger vollständig und ziemlich ausgereift.
Ich persönlich neige jedoch zu Tastypie. Es scheint einfacher zu sein, es einzurichten. Es wurde von den gleichen Leuten gemacht, die Django-Heuhaufen erstellt haben, was fantastisch ist und laut Django-Paketen wird es mehr als Django = verwendet REST Framework.
Es ist erwähnenswert, dass DRF seit der ersten Anfrage immer stärker geworden ist.
Es ist das aktivere der beiden bei Github (beides in Bezug auf Commits, Stars, Gabeln und Mitwirkende).
DRF unterstützt OAuth 2 und die durchsuchbare API.
Ehrlich gesagt ist das letzte Feature für mich der Mörder. In der Lage zu sein, alle meine Front-End-Entwickler auf die durchsuchbare API zu verweisen, wenn sie nicht sicher sind, wie etwas funktioniert, und zu sagen: "Geh spielen; finde es heraus 'ist fantastisch.
Nicht zuletzt, weil sie es auf ihre eigene Art verstehen und wissen, dass die API wirklich, definitiv, genau das tut, was die 'Dokumentation' sagt, dass sie es tut. In der Welt der Integration mit APIs ist DRF allein aufgrund dieser Tatsache das zu übertreffende Framework.
Django-tastypie wird nicht mehr von seinem ursprünglichen Schöpfer gepflegt und er hat ein neues, leichtes Gerüst für sich geschaffen.
Derzeit sollten Sie Django-rest-framework mit Django) verwenden, wenn Sie bereit sind, Ihre API verfügbar zu machen.
Große Unternehmen nutzen es. Django-rest-framework ist ein Kernmitglied des Django) Teams und er erhält finanzielle Unterstützung für die Pflege des Django-rest-frameworks.
Django-rest-framework hat auch eine große Anzahl von ständig wachsenden 3rd-Arty-Paketen, mit denen Sie Ihre APIs einfacher und mit weniger Aufwand erstellen können.
Ein Teil von drf wird auch in Django richtig zusammengeführt.
dRF bieten mehr bessere Muster und Werkzeuge als Django-Tastypie.
Kurz gesagt, es ist gut gestaltet, gut gewartet, finanziert, bietet riesige Apps von Drittanbietern, denen große Unternehmen vertrauen, und es ist einfacher und weniger als Tastypie.
Nun, Tastypie und DRF sind beide eine ausgezeichnete Wahl. Sie können einfach nichts falsch machen . (Ich habe noch nie an Piston gearbeitet und es ist seit einigen Tagen nicht mehr im Trend. Daher kann ich mich nicht dazu äußern. Für gut befunden.) Meiner bescheidenen Meinung nach: Die Auswahl sollte nach Ihren Fähigkeiten, Kenntnissen und Fähigkeiten und nicht nach den Angeboten von TastyPie und DRF erfolgen, es sei denn, Sie bauen etwas außerhalb des Kurses wirklich groß wie Quora, Facebook oder Google.
Persönlich fing ich an, zuerst an TastyPie zu arbeiten, als ich Django noch nicht einmal richtig kannte. Zu dieser Zeit ergab alles Sinn, nur dass man REST und HTTP sehr gut kannte, aber fast keine oder nur geringe Kenntnisse über Django hatte. Denn meine einzige Absicht war es, in kürzester Zeit RESTful-APIs zu erstellen, die auf Mobilgeräten verwendet werden sollten. Also, wenn Sie einfach so sind wie "Ich bin zu dieser Zeit Django-New-Bie", denken Sie nicht, dass mehr für TastyPie ist.
Wenn Sie jedoch über langjährige Erfahrung in der Arbeit mit Django verfügen, wissen Sie Bescheid und sind mit fortgeschrittenen Konzepten (wie Klassenbasierte Ansichten, Formulare, Modellvalidierer, QuerySet, Manager und Modellinstanzen) sehr vertraut wie alle miteinander interagieren), ** für DRF gehen. ** DFR basiert auf den klassenbasierten Ansichten von Django. DRF ist idiomatisch Django. Es ist, als würden Sie Modellformulare, Validatoren usw. schreiben. (Nun, idiomatisches Django ist nicht annähernd idiomatisches Python. Wenn Sie python Experte sind, aber keine Erfahrung mit Django haben, dann könnten Sie Schwierigkeiten haben, sich zunächst in die idiomatische Django Philosophie und auch in die DRF einzufügen). DRF kommt mit vielen eingebauten magischen Methoden genau wie Django. Wenn Sie die magischen Methoden und die Philosophie Django lieben, ist DRF genau das Richtige für Sie.
Um die genaue Frage zu beantworten:
Tastypie:
Vorteile:
Nachteile:
DRF:
Nachteile:
Persönlich, was würde ich in meinem nächsten Projekt verwenden?
Jetzt bin ich kein Fan mehr von MAGIC- und Out-of-Box-Funktionen. Denn alles, was sie kosten, ist sehr teuer. * Unter der Annahme, dass ich alle Möglichkeiten und die Kontrolle über Projektzeit und Budget habe, würde ich mit etwas Leichtem wie RESTLess ( https://github.com/toastdriven/restless ) (erstellt vom Schöpfer von TastyPie) beginnen und Django-Heuhaufen ( http://haystacksearch.org/ )). Und für die gleiche Sache wähle wahrscheinlich/definitiv das leichtgewichtige Web-Framework wie Flask.
Aber wieso? - Mehr lesbarer, einfacher und handlicher idiomatischer python (auch bekannt als Pythonic) Code. Zwar mehr Code, aber schließlich bieten große Flexibilität und Anpassung.
Was ist, wenn Sie nur eine andere Wahl haben als Django und eine von TastyPie und DRF?
Warum haben Sie sich dann zuerst für DRF/TastyPie entschieden?
Ich hoffe, es wird Ihnen helfen, eine bessere Entscheidung zu treffen.
Andere Referenzen - 1. Der Status von Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. Was sind die Unterschiede zwischen Django-tastypie und djangorestframework? ( Was sind die Unterschiede zwischen Django-tastypie und djangorestframework? )
Nachdem ich beide verwendet habe, ist eine Sache, die mir an Django Rest Framwork gefallen hat, dass sie sehr konsistent mit Django ist.
Das Schreiben von Modell-Serialisierern ist dem Schreiben von Modellformularen sehr ähnlich. Die eingebauten generischen Ansichten sind den generischen Ansichten von Django für HTML sehr ähnlich.