В чем разница между django-tastypie и djangorestframework? [закрытый]


Почему бы вам использовать один над другим, для предоставления API для вашего приложения Django?

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

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

7 141

7 ответов:

Как автор django-rest-framework, у меня есть очевидная предвзятость ;) но мое, надеюсь, довольно объективное мнение об этом что-то вроде:

TastyPie

  • как отметил Торстен, вы не собираетесь идти далеко не так с чем-то написанным теми же хевами, что и awesome Джанго-сена. Из того, что я видел в их списке рассылки Daniel Lindsey et al, они очень полезны, а Tastypie стабильна, всеобъемлюща и хорошо документально
  • превосходит в предоставлении вам разумный набор поведения по умолчанию и делает создание API с этим стилем невероятно легко.

Django REST framework

  • дает вам HTML обзор-возможность самоописания API. (Например, см. учебник API.) Возможность навигации и взаимодействия с API непосредственно в браузере-это большая победа в юзабилити.
  • пытается оставаться рядом с Джанго идиомы во всем-построен на вершине Представления на основе классов Django и т. д... (В то время как TastyPie появился до того, как CBVs Django существовал, поэтому использует собственную реализацию представлений на основе классов)
  • Я хотел бы думать, что базовая архитектура очень красивая, развязкой и т. д...

в любом случае, оба хороши. Я бы, вероятно, охарактеризовал Tastypie как дающий вам разумный набор значений по умолчанию из коробки, а REST framework как очень красиво развязанный и гибкий. Если вы планируете инвестируя много времени в API, я бы рекомендовал просматривать документы и кодовую базу каждого из них и пытаться понять, что вам больше подходит.

очевидно, что есть также Почему TastyPie?- раздел в нем README, и 'REST framework 2 объявление'.

см. также сообщение в блоге Даниэля Гринфельда на выбор платформы API для Django, С мая 2012 (стоит отметить, что это было еще за несколько месяцев до большой Rest framework 2.0 release).

также несколько потоков на Reddit с людьми, задающими этот же вопрос, от декабрь 2013 и июль 2013.

последнее обновление февраль 2014

оба являются хорошим выбором.

для фильтров, tastypie является более мощным из коробки. Если у вас есть представление, которое предоставляет модель, вы можете сделать фильтры неравенства в стиле Django:

http://www.example.com/api/person?age__gt=30

или или запросах:

http://www.example.com/api/mymodel?language__in=en&language__in=fr

это возможно с djangorestframework, но вы должны написать пользовательские фильтры для каждой модели.

для tracebacks, я был более впечатлен django-rest-framework. Tastypie пытается отправить по электронной почте settings.ADMINS об исключениях, когда DEBUG = False. Когда DEBUG = True,сообщение об ошибке по умолчанию сериализованный в JSON, что труднее читать.

EDIT устаревший ответ, tastypie на самом деле больше не поддерживается. Используйте Django Rest framework, если вам нужно выбрать фреймворк для отдыха.

для обзора фактических различий между ними вы должны прочитать их документацию. Они оба более или менее полные и вполне зрелые.

Я лично склонен к tastypie, хотя. Кажется, его легче настроить. Это сделано из тех же людей, которые создали Джанго-сена что является удивительным и в соответствии с django-пакеты он используется больше, чем Django Rest framework.

стоит отметить, что с тех пор, как это было впервые задано, DRF перешел от силы к силе.

Это более активный из двух на github (как с точки зрения коммитов, звезд, вилок и участников)

ФПИ имеет поддержку протокола OAuth 2 и API доступны для просмотра.

честно говоря, для меня это последняя функция-убийца. Возможность указать все мои интерфейсные разработчики на просматриваемый API, когда они не уверены, как что-то работает, и сказать "Go play; find out" - это фантастический.

не в последнюю очередь потому, что это означает, что они понимают это на своих собственных условиях и знают, что API действительно, определенно, абсолютно делает то, что говорит "документация". В мире интеграции с API этот факт сам по себе делает DRF основой для победы.

использовав оба, одна вещь, которая мне понравилась (предпочтительно) о Django Rest Framwork, это то, что очень согласуется с Django.

написание модельных сериализаторов очень похоже на написание модельных форм. Встроенные общие представления очень похожи на общие представления Django для HTML.

Ну, Tastypie и DRF оба являются отличным выбором. Ты просто Не могу пойти не так с любым из них. (Я никогда не работал над Piston; и его вид больше не в тренде теперь дни, поэтому не будет / не может прокомментировать его. Как само собой разумеющееся.). По моему скромному мнению: выбор должен быть сделан на ваших (и вашей технической команды) навыков, знаний и возможностей. вместо того, что предлагает TastyPie и DRF, если только вы не строите что-то действительно большое, как Quora, Facebook или Google.

лично я в конечном итоге начал работать сначала на TastyPie в то время, когда я даже не знал Джанго должным образом. В то время все это имело смысл, только зная REST и HTTP очень хорошо, но почти не зная или мало зная о django. Потому что мое единственное намерение состояло в том, чтобы построить RESTful API в кратчайшие сроки, которые должны были быть использованы в мобильных устройствах. Так что если вы просто, как ‘я случайно в то время называется django-new-bie",Не думаю, что больше пойти TastyPie.

но если у вас много лет опыта работы с Django, знает его наизнанку и очень удобно использовать передовые концепции (например, представления на основе классов, формы, валидатор модели, QuerySet, менеджер и экземпляры модели и как все они взаимодействуют друг с другом), **перейти на DRF. ** DFR основан на представлениях на основе классов django. DRF-это идиоматический Джанго. Его, как вы пишете типовые формы, валидаторы и т. д. (Ну, идиоматический django не где рядом идиоматический питон. Если вы являетесь экспертом по python, но не имеете опыта работы с Django, то вам может быть трудно изначально вписаться в идиоматическую философию django и, если на то пошло, DRF). DRF поставляется с большим количеством встроенных магических методов, таких как django. Если вы любите Джанго магические методы и философию * * DRF * * это только для вас.

теперь, чтобы точно ответить вопрос:

Tastypie:

плюсы:

  1. легко начать работу и обеспечить основные функциональные возможности OOB (из коробки)
  2. большую часть времени вы не будете иметь дело с передовыми концепциями Django, такими как CBVs, формы и т. д.
  3. более читаемый код и меньше магии!
  4. если ваши модели не-ОРМ, то пойдите для оно.

недостатки:

  1. строго не следует идиоматическому Django (разум хорошо python и философии django совершенно разные)
  2. вероятно, немного трудно настроить API, как только вы идете большой
  3. Нет O-Auth

DRF:

  1. следуйте идиоматический django. (Если вы знаете, Джанго наизнанку, и очень удобно с ЦБВ, форм и т. д. без всяких сомнений пойти на это)
  2. предоставляет стандартную функциональность остальных, используя ModelViewSets. В то же время, обеспечивает больший контроль для настройки с помощью CustomSerializer, APIView, GenericViews и т.д.
  3. лучше аутентификация. Проще писать пользовательские классы разрешений. Работа очень хорошо и, что немаловажно, очень легко заставить его работать с библиотеками 3rd party и OAuth. DJANGO-REST-AUTH стоит упомянуть библиотеку для аутентификации / социальной аутентификации / регистрации. (https://github.com/Tivix/django-rest-auth)

недостатки:

  1. если вы не знаете Джанго очень хорошо, не идите на это.
  2. магия! Некоторое время очень трудно понять магию. Потому что он был написан поверх CBV django, которые, в свою очередь, довольно сложны по своей природе. (https://code.djangoproject.com/ticket/6735)
  3. имеет крутое обучение кривая.

лично, что бы я использовать в своем следующем проекте?

  • теперь я больше не поклонник магии и готовых функций. Потому что все они приходят по *большой цене. * Предполагая, что у меня есть все варианты и контроль над временем и бюджетом проекта, я бы начал с чего-то легкого, как беспокойный (https://github.com/toastdriven/restless) (создано создателем TastyPie и django-haystack (http://haystacksearch.org/)). и по тому же вопросу, вероятно,/определенно выберите легкий веб-фреймворк, например фляга.

  • но почему? - Более читаемый, простой и управляемый идиоматический код python (он же pythonic). Хотя больше кода, но в конечном итоге обеспечивают большую гибкость и возможности настройки.

    • явное лучше, чем неявное.
    • простое лучше, чем сложное.
    • комплекс лучше, чем сложно.
    • плоское лучше, чем вложенное.
    • разреженное лучше, чем плотное.
    • читабельность имеет значение.
    • особых случаев недостаточно, чтобы нарушить правила.

Что делать, если у вас нет выбора, кроме Django и одного из TastyPie и DRF?

  • теперь, зная Джанго достаточно хорошо, я пойду с **DRF. **
  • почему? - идиоматический джагно! (Я не люблю его, Хотя). Лучшая интеграция OAuth и 3rd party (django-rest-auth-мой любимый).

тогда почему вы выбрали DRF / TastyPie на первом месте?

  • в основном я работал со стартапами и небольшими фирмами, которые ограничены в бюджете и времени; и нужно доставить что-то быстрое и полезное. Джанго служат этой цели очень хорошо. (я вовсе не говорю, что django не масштабируется. Есть такие сайты, как Quora, Disquss, Youtube и т. д. работают на нем. Но все это требует времени и более чем средних навыков)

Я надеюсь, это поможет вам принять лучшее решение.

другие ссылки - 1. Состояние Tastypie (http://toastdriven.com/blog/2014/may/23/state-tastypie/) 2. В чем разница между django-tastypie и djangorestframework? (в чем разница между django-tastypie и djangorestframework?)

Django-tastypie больше не поддерживается его оригинальным создателем, и он создал новую легкую структуру собственного веса.

в настоящее время вы должны использовать django-rest-framework с django, если вы готовы предоставить свой API.

крупные корпорации используют его. django-rest-framework является основным членом команды django, и он получает финансирование для поддержания django-rest-framework.

django-rest-framework также имеют огромное количество постоянно растущих 3-х арт пакеты тоже, которые помогут вам построить свой API более легко с меньшим количеством неприятностей.

некоторая часть drf также будет объединена в собственно django.

drf обеспечивает более лучшие шаблоны и инструменты, чем django-tastypie.

короче говоря, он хорошо спроектирован, хорошо поддерживается, финансируется, предоставляет огромные сторонние приложения, которым доверяют крупные организации, проще и меньше шаблонных и т. д. над tastypie.