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

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

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

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

7 ответов


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

TastyPie

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

Django Rest framework

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

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

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

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

также несколько потоков на 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, которые труднее читать.


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

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

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


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

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

DRF имеет поддержку 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 в то время, когда я даже не знал django должным образом. Все это имело смысл в то время, только зная REST и HTTP очень хорошо, но почти без или мало знаний о django. Потому что моим единственным намерением было создать RESTful APIs в кратчайшие сроки, которые должны были использоваться в мобильных устройствах. Поэтому, если вы похожи на ‘Я в то время назывался django-new-bie",Не думаю, что больше пойти TastyPie.

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

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

Tastypie:

плюсы:

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

недостатки:

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

DRF:

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

недостатки:

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

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

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

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

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

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

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

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

  • в основном я работал со стартапами и небольшими фирмами, которые ограничены в бюджете и времени; и должны доставить что-то быстрое и полезное. Django служит этой цели очень хорошо. (я вовсе не говорю, что 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 также имеет огромное количество постоянно растущих 3rd arty пакеты тоже, которые помогут вам построить ваш API более легко с меньшим количеством неприятностей.

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

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

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