Was sind die Unterschiede zwischen Django-Tastypie und Djangorestframework? [geschlossen]

157

Warum sollten Sie eine über der anderen verwenden, um eine API für Ihre Django-App verfügbar zu machen?

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

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

Kaffeemühle
quelle

Antworten:

206

Als Autor des Django-Rest-Frameworks habe ich eine offensichtliche Tendenz;), aber meine hoffentlich ziemlich objektive Meinung dazu ist ungefähr so:

TastyPie

  • Wie Torsten bemerkte, werden Sie mit etwas, das von denselben Leuten geschrieben wurde wie der fantastische Django-Heuhaufen , nicht viel falsch machen . Nach dem, was ich auf ihrer Mailingliste gesehen habe, sind Daniel Lindsey et al. Sehr hilfreich, und Tastypie ist stabil, umfassend und gut dokumentiert
  • Hervorragend geeignet, um Ihnen ein vernünftiges Standardverhalten zu bieten und das Erstellen einer API mit diesem Stil unglaublich einfach zu machen.

Django REST Framework

  • Bietet Ihnen selbstbeschreibende HTML-durchsuchbare APIs. (ZB siehe Tutorial-API .) Die Möglichkeit, direkt im Browser mit der API zu navigieren und zu interagieren, ist ein großer Gewinn für die Benutzerfreundlichkeit.
  • Versucht, in der Nähe der Django-Redewendungen zu bleiben - basierend auf Djangos klassenbasierten Ansichten usw. (Während TastyPie vor der Existenz von Djangos CBVs auf den Markt kam, wird daher eine eigene Implementierung von klassenbasierten Ansichten verwendet.)
  • Ich würde gerne denken, dass die zugrunde liegende Architektur ziemlich schön aufgebaut, entkoppelt usw. ist.

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 .

Tom Christie
quelle
7
Übrigens, wir haben das Django-Rest-Framework für ein großes Projekt verwendet, und es ist großartig! Ich habe schon früh eine Woche lang einen Tastypie getestet und bereue es nicht, mit DRF gefahren zu sein. Die Dokumentation entspricht leider nicht dem Code und dem Framework selbst, aber ansonsten reine Glückseligkeit.
Ben Roberts
Tolles Zeug, danke Ben. Und ja, dein Punkt ist. Die Dokumentation ist auf jeden Fall fair. Planen Sie, das anzugehen!
Tom Christie
"Mein Blitzgespräch von DjangoCon über das Django-Rest-Framework" -Videolink ist tot!
Mutant
1
@Mutant - Danke, die Website djangocon.eu 2011 ist jetzt tot, aber ich habe direkt auf das Video auf blip.tv verlinkt.
Tom Christie
@ TomChristie Der Link zu blip.tv ist jetzt tot! Ist das das richtige Video?
Kevins
19

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.ADMINSAusnahmen per E-Mail zu senden, wenn DEBUG = False. Wenn DEBUG = True, ist die Standardfehlermeldung serialisiertes JSON , das schwerer zu lesen ist.

Wilfred Hughes
quelle
8
Sie müssen hierfür keine benutzerdefinierten Filter in Django REST Framework schreiben. Sie müssen nur das bereitgestellte, DjangoFilterBackendwie vom REST-Framework dokumentierte hier verwenden: django-rest-framework.org/api-guide/filtering#api-guide
Monokrom
13

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.

Torsten Engelbrecht
quelle
2
Die Dokumentation ist überhaupt kein guter "Überblick über die tatsächlichen Unterschiede zwischen beiden".
Monokrom
Ich -1 das, weil es deutlich veraltet ist und es inzwischen einen sachlichen Fehler gibt: DRF wird jetzt viel häufiger verwendet als TastyPie. Das heißt, der Autor hat den Link zu Django-Paketen eingefügt, es ist eine qualitativ hochwertige Antwort.
Texnic
1
Basierend auf der Github-Geschichte und den Problemen, die 2018 gelöst wurden, scheint TastyPie tatsächlich noch erhalten zu sein.
Sushil
Tastypie wird für Django 1.11 unterstützt. Dies ist beruhigend für zukünftige Projekte. django-tastypie.readthedocs.io/en/latest/…
elsadek
5

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.

Tom Manterfield
quelle
Ich frage mich, ob django-tastypie-swaggerdiese Lücke schließt?
Victor Sergienko
2

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:

  1. Einfacher Einstieg und Bereitstellung grundlegender Funktionen OOB (sofort einsatzbereit)
  2. Meistens beschäftigen Sie sich nicht mit fortgeschrittenen Django-Konzepten wie CBVs, Formularen usw.
  3. Mehr lesbarer Code und weniger Magie!
  4. Wenn Ihre Modelle NON-ORM sind, machen Sie es.

Nachteile:

  1. Folgt nicht strikt dem idiomatischen Django (wohlgemerkt, Python und Djangos Philosophie sind ganz anders)
  2. Es ist wahrscheinlich etwas schwierig, APIs anzupassen, wenn Sie erst einmal groß raus sind
  3. Keine O-Auth

DRF:

  1. Folgen Sie dem idiomatischen Django. (Wenn Sie Django in- und auswendig kennen und sich ohne Zweifel sehr gut mit CBV, Forms usw. auskennen, entscheiden Sie sich dafür)
  2. Bietet sofort einsatzbereite REST-Funktionen mit ModelViewSets. Gleichzeitig bietet es eine bessere Kontrolle für die Anpassung mithilfe von CustomSerializer, APIView, GenericViews usw.
  3. Bessere Authentifizierung. Einfacheres Schreiben von benutzerdefinierten Berechtigungsklassen. Arbeiten Sie sehr gut und vor allem sehr einfach, damit es mit Bibliotheken von Drittanbietern und OAuth funktioniert. DJANGO-REST-AUTH ist eine erwähnenswerte BIBLIOTHEK für Auth / SocialAuthentication / Registration. ( https://github.com/Tivix/django-rest-auth )

Nachteile:

  1. Wenn Sie Django nicht sehr gut kennen, machen Sie das nicht.
  2. Magie! Einige Zeit sehr schwer zu verstehen, Magie. Weil es auf Djangos CBV geschrieben wurde, die wiederum ziemlich komplex sind. ( https://code.djangoproject.com/ticket/6735 )
  3. Hat eine steile Lernkurve.

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.

    • Explizit ist besser als implizit.
    • Einfach ist besser als komplex.
    • Komplex ist besser als kompliziert.
    • Wohnung ist besser als verschachtelt.
    • Spärlich ist besser als dicht.
    • Lesbarkeit zählt.
    • Sonderfälle sind nicht speziell genug, um gegen die Regeln zu verstoßen.

Was ist, wenn Sie nur Django und einen von TastyPie und DRF haben?

  • Jetzt, da ich den Django ziemlich gut kenne, werde ich mit ** DRF gehen. ** **.
  • Warum? - idiomatischer Djagno! (Ich liebe es aber nicht). Bessere Integration von OAuth und Drittanbietern (Django-Rest-Auth ist mein Favorit).

Warum haben Sie sich dann zuerst für DRF / TastyPie entschieden?

  • Meistens habe ich mit Startups und kleinen Firmen gearbeitet, die wenig Budget und Zeit haben. und müssen etwas schnell und brauchbar liefern. Django erfüllen diesen Zweck sehr gut. (Ich sage überhaupt nicht, dass Django nicht skalierbar ist. Es gibt Websites wie Quora, Disquss, Youtube usw., die darauf laufen. Aber alles erfordert Zeit und mehr als durchschnittliche Fähigkeiten.)

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? )

Jadav Bheda
quelle
1

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.

wackelig_col
quelle
1

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.

auvipy
quelle