Warum sollten Sie eine über der anderen verwenden, um eine API für Ihre Django-App verfügbar zu machen?
Warum sollten Sie eine über der anderen verwenden, um eine API für Ihre Django-App verfügbar zu machen?
Antworten:
Als Autor des Django-Rest-Frameworks habe ich eine offensichtliche Tendenz;), aber meine hoffentlich ziemlich objektive Meinung dazu ist ungefähr so:
In jedem Fall sind beide gut. Ich würde Tastypie wahrscheinlich so charakterisieren, dass Sie sofort eine vernünftige Reihe von Standardeinstellungen erhalten, 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 der einzelnen APIs zu durchsuchen und ein Gefühl dafür zu bekommen, welches besser zu Ihnen passt.
Natürlich gibt es auch das "Warum TastyPie?" Abschnitt in der README-Datei und im 'REST-Framework 3' .
Siehe auch Daniel Greenfelds Blogbeitrag über die Auswahl eines API-Frameworks für Django ab Mai 2012 (Bemerkenswert ist, dass dies noch einige Monate vor der großen Veröffentlichung von REST Framework 2.0 war).
Auch ein paar Threads zu Reddit mit Leuten, die dieselbe Frage stellen, von Dezember 2013 bis Juli 2013 .
Beides ist eine gute Wahl.
Bei Filtern ist Tastypie sofort leistungsstärker. Wenn Sie eine Ansicht haben, die ein Modell verfügbar macht, können Sie Ungleichheitsfilter im Django-Stil ausführen:
http://www.example.com/api/person?age__gt=30
oder ODER-Abfragen:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
Diese sind mit djangorestframework möglich, aber Sie müssen benutzerdefinierte Filter für jedes Modell schreiben.
Für Rückverfolgungen war ich mehr vom Django-Rest-Framework beeindruckt. Tastypie versucht, settings.ADMINS
Ausnahmen per E-Mail zu senden, wenn DEBUG = False
. Wenn DEBUG = True
, ist die Standardfehlermeldung serialisiertes JSON , das schwerer zu lesen ist.
DjangoFilterBackend
wie vom REST-Framework dokumentierte hier verwenden: django-rest-framework.org/api-guide/filtering#api-guide
EDIT Veraltet Antwort ist tastypie nicht wirklich mehr 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 dazu, zu schmecken. Es scheint einfacher zu sein, es einzurichten. Es wurde von denselben Leuten gemacht, die Django-Heuhaufen erstellt haben, was fantastisch ist und laut Django-Paketen mehr als das Django REST-Framework verwendet wird.
Es ist erwähnenswert, dass DRF seit dieser ersten Frage immer stärker geworden ist.
Es ist das aktivere der beiden auf Github (sowohl 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 Killer. 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: "Go play; herauszufinden 'ist fantastisch.
Nicht zuletzt, weil sie es auf eigene Faust verstehen und wissen, dass die API wirklich absolut das tut, was die 'Dokumentation' sagt. In der Welt der Integration in APIs ist DRF allein aufgrund dieser Tatsache das zu übertreffende Framework.
django-tastypie-swagger
diese Lücke schließt?
Nun, Tastypie und DRF sind beide eine ausgezeichnete Wahl. Mit beiden kann man einfach nichts falsch machen. (Ich habe noch nie an Piston gearbeitet; und es ist seit Tagen kein Trend mehr, also werde / kann ich es nicht kommentieren. Für selbstverständlich gehalten.) Meiner bescheidenen Meinung nach: Die Wahl sollte nach Ihren Fähigkeiten, Kenntnissen und Fähigkeiten (und den Ihres Technologieteams) getroffen werden. Anstatt auf dem, was TastyPie und DRF bieten, bauen Sie etwas Außergewöhnliches wie Quora, Facebook oder Google.
Persönlich fing ich an, zuerst an TastyPie zu arbeiten, zu einer Zeit, als ich Django nicht einmal richtig kannte. Zu dieser Zeit machte alles Sinn, nur REST und HTTP sehr gut zu kennen, aber mit fast keinem oder nur geringem Wissen über Django. Denn meine einzige Absicht war es, in kürzester Zeit RESTful-APIs zu erstellen, die auf Mobilgeräten verwendet werden sollten. Wenn Sie also nur sagen: "Ich werde zu dieser Zeit zufällig Django-New-Bie genannt", denken Sie nicht, dass TastyPie mehr ist.
Aber wenn Sie haben viele Jahre mit Django arbeiten Erfahrung weiß sie von innen nach außen und sehr komfortabel mit Hilfe modernster Konzepte (wie Class Based Ansichten, Formulare, Modell Validator, QuerySet, Manager- und Modellinstanzen und wie sie alle miteinander zusammenwirken), * * Gehen Sie für DRF. ** DFR basiert auf den klassenbasierten Ansichten von Django. DRF ist ein idiomatischer Django. Es ist, als würden Sie Modellformulare, Validatoren usw. schreiben. (Nun, idiomatisches Django ist nicht annähernd so gut wie idiomatisches Python. Wenn Sie Python-Experte sind, aber keine Erfahrung mit Django haben, fällt es Ihnen möglicherweise schwer, sich zunächst in die idiomatische Django-Philosophie einzufügen das ist auch DRF wichtig). DRF bietet viele eingebaute magische Methoden, genau wie Django. Wenn Sie die magischen Methoden und die Philosophie des Django lieben, ist ** DRF ** genau das Richtige für Sie.
Um nur die genaue Frage zu beantworten:
Tastypie:
Vorteile:
Nachteile:
DRF:
Nachteile:
Was würde ich persönlich in meinem nächsten Projekt verwenden?
Jetzt bin ich kein Fan von MAGIC- und Out-of-Box-Funktionen mehr. Weil sie alle zu einem * hohen Preis kommen. * Vorausgesetzt, ich habe alle Möglichkeiten und Kontrolle über Projektzeit und -budget, würde ich mit etwas Leichtem wie RESTLess ( https://github.com/toastdriven/restless ) beginnen (erstellt vom Schöpfer von TastyPie und django-haystack ( http: //haystacksearch.org/ )). Und für die gleiche Angelegenheit wählen Sie wahrscheinlich / definitiv das leichte Web-Framework wie Flask.
Aber wieso? - Besser lesbarer, einfacher und überschaubarer idiomatischer Python-Code (auch bekannt als Python-Code). Obwohl mehr Code, aber schließlich große Flexibilität und Anpassung bieten.
Was ist, wenn Sie nur Django und einen von TastyPie und DRF haben?
Warum haben Sie sich dann zuerst für DRF / TastyPie entschieden?
Ich hoffe, es wird Ihnen helfen, eine bessere Entscheidung zu treffen.
Weitere 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, mochte ich (bevorzugt) an Django Rest Framwork, dass es sehr konsistent mit Django ist.
Das Schreiben von Modell-Serialisierern ist dem Schreiben von Modellformularen sehr ähnlich. Die integrierten generischen Ansichten sind den generischen Ansichten von Django für HTML sehr ähnlich.
Django-tastypie wird nicht mehr von seinem ursprünglichen Schöpfer gepflegt und er hat selbst ein neues leichtes Framework geschaffen.
Derzeit sollten Sie das Django-Rest-Framework mit Django verwenden, wenn Sie bereit sind, Ihre API verfügbar zu machen.
Große Unternehmen nutzen es. Das Django-Rest-Framework ist ein Kernmitglied des Django-Teams und erhält Mittel, um das Django-Rest-Framework aufrechtzuerhalten.
Das Django-Rest-Framework hat auch eine große Anzahl von ständig wachsenden 3rd Arty-Paketen, mit denen Sie Ihre APIs einfacher und ohne großen Aufwand erstellen können.
Ein Teil von drf wird auch in Django zusammengeführt.
drf bietet mehr bessere Muster und Werkzeuge als Django-Tastypie.
Kurz gesagt, es ist gut gestaltet, gut gepflegt, finanziert, bietet riesige Apps von Drittanbietern, denen große Unternehmen vertrauen, einfacher und weniger kochend usw. über Tastypie.