webentwicklung-frage-antwort-db.com.de

Was sind die Unterschiede zwischen Django-tastypie und djangorestframework?

Warum sollten Sie eine übereinander verwenden, um eine API für Ihre Django App bereitzustellen?

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

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

151
coffee-grinder

Als Autor des Django-Rest-Frameworks habe ich eine offensichtliche Voreingenommenheit;), aber meine hoffentlich ziemlich objektive Meinung dazu ist so etwas wie:

TastyPie

  • Wie Torsten feststellte, werden Sie mit etwas, das von den gleichen Leuten wie der fantastische Django-Heuhaufen geschrieben wurde, nicht viel falsch machen. Nach dem, was ich auf ihrer Mailingliste gesehen habe, sind Daniel Lindsey und andere sehr hilfreich, und Tastypie ist stabil, umfassend und gut dokumentiert
  • Hervorragend darin, Ihnen ein vernünftiges Standardverhalten zu vermitteln und das Erstellen einer API mit diesem Stil unglaublich einfach zu machen.

Django REST Framework

  • Bietet HTML-durchsuchbare, selbstbeschreibende APIs. (ZB finden Sie in der Tutorial-API .) Die Möglichkeit, mit der API direkt im Browser zu navigieren und zu interagieren, ist ein großer Gewinn für die Benutzerfreundlichkeit.
  • Versucht, in der Nähe der Django -Idiome zu bleiben - basierend auf den klassenbasierten Ansichten von Django usw. (Während TastyPie vor der Existenz der CBVs von Django eingeführt wurde, verwendet es die Implementierung seiner eigenen klassenbasierten Ansichten.)
  • Ich würde gerne denken, dass die zugrunde liegende Architektur ziemlich schön gebaut, entkoppelt usw. ist.

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 .

202
Tom Christie

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.

19
Wilfred Hughes

[~ # ~] 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.

12

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.

5
Tom Manterfield

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.

1
auvipy

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:

  1. Einfacher Einstieg und Bereitstellung grundlegender OOB-Funktionen (out of the box)
  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 NICHT ORM sind, entscheiden Sie sich dafür.

Nachteile:

  1. Verfolgt nicht streng idiomatisch Django (Verstand gut python und Djangos Philosophien sind ziemlich unterschiedlich)
  2. Wahrscheinlich etwas schwierig, APIs anzupassen, wenn Sie groß rauskommen
  3. Kein O-Auth

DRF:

  1. Folgen Sie dem idiomatischen Django. (Wenn Sie Django in- und auswendig kennen und mit CBV, Formularen usw. sehr vertraut sind, dann entscheiden Sie sich ohne Zweifel dafür.)
  2. Bietet ab Werk REST Funktionen mit ModelViewSets. Bietet gleichzeitig eine bessere Kontrolle über die Anpassung mithilfe von CustomSerializer, APIView, GenericViews usw.
  3. Bessere Authentifizierung. Einfacheres Schreiben benutzerdefinierter Berechtigungsklassen. Arbeiten Sie sehr gut und vor allem sehr einfach, damit es mit Bibliotheken von Drittanbietern und OAuth funktioniert. Django-REST-AUTH verdient die Erwähnung von LIBRARY für Auth/SocialAuthentication/Registration. ( https://github.com/Tivix/Django-rest-auth )

Nachteile:

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

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.

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

Was ist, wenn Sie nur eine andere Wahl haben als Django und eine von TastyPie und DRF?

  • Nun, da ich den Django einigermaßen gut kenne, gehe ich mit ** DRF. **
  • Warum? - idiomatischer Djagno! (Ich liebe es aber nicht) Bessere OAuth und Drittanbieter-Integration (Django-rest-auth ist mein Favorit).

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

  • Meist habe ich mit Startups und kleinen Firmen zusammengearbeitet, deren Budget und Zeit knapp sind. 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, was Zeit und mehr als durchschnittliche Fähigkeiten erfordert)

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

1
Jadav Bheda

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.

1
wobbily_col