Каковы различия между Django-Tastypie и Djangorestframework? [закрыто

StackOverflow https://stackoverflow.com/questions/7303313

Вопрос

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

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

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

Это было полезно?

Решение

Как автор Django-Rest-Framework, у меня есть очевидная предвзятость;), но мое, надеюсь, предполагаемое мнение об этом, что-то вроде:

Tastypie

  • Как отметил Торстен, вы не пойдете далеко не так с чем -то, что написано теми же взглядами, что и потрясающие Джанго-Хейстек. Анкет Из того, что я видел в их списке рассылки, Даниэль Линдси и др.
  • Превосходно, чтобы дать вам разумный набор поведения по умолчанию и сделать создание API с этим стилем невероятно простым.

Django Rest Framework

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

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

Очевидно, есть также 'Почему Tastypie?' раздел в его readme и 'Framework Rest 3'.

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

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

Другие советы

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

Для фильтров Tastypie более мощный без ящика. Если у вас есть представление, которая разоблачает модель, вы можете сделать фильтры неравенства в стиле Джанго:

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-Packages Он используется больше, чем Django Rest Framework.

Стоит отметить, что с тех пор, как это впервые спросило, что DRF ушел от силы к силе.

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

DRF обладает поддержкой OAuth 2 и API.

Честно говоря, эта последняя особенность - убийца. Возможность указать на всех моих фронтальных разработчиков на API, который можно просмотреть, когда они не уверены, как что-то работает, и говорят: «Иди играй; Узнайте, это фантастика.

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

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

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

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

Лично я в итоге начал работать сначала над Tastypie в то время, когда я даже не знал Джанго должным образом. Все это имело смысл в то время, только зная отдых и HTTP очень хорошо, но почти не имея или мало знания о Джанго. Потому что мое единственное намерение состояло в том, чтобы создать Restful API в кратчайшие сроки, которые должны были использоваться на мобильных устройствах. Так что, если вы просто как: «Я бы в то время назывался Django-new-bie», Не думаю, что больше пойдет на Tastypie.

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

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

Tastypie:

Преимущества:

  1. Легко начать с работы и обеспечить основные функции OOB (вне коробки)
  2. Большую часть времени вы не будете иметь дело с продвинутыми концепциями Django, такими как CBV, формы и т. Д.
  3. Более читаемый код и меньше магии!
  4. Если ваши модели не являются, сделайте это.

Недостатки:

  1. Не следовал идиоматическому Джанго (Mind Well Python и философии Джанго совершенно разные)
  2. Наверное, немного сложно настроить API, как только вы станете большим
  3. Нет O-Auth

DRF:

  1. Следуйте идиоматическому Джанго. (Если вы знаете Джанго наизнанку и очень удобно с CBV, формы и т. Д., Без сомнения, сделайте это)
  2. Предоставляет функциональность Rest Funcation с использованием модели ViewSets. В то же время, обеспечивает больший контроль для настройки с использованием Customerializer, Apiview, GenericViews и т. Д.
  3. Лучшая аутентификация. Легче написать пользовательские классы разрешений. Работайте очень хорошо и, что важно, очень легко заставить его работать с сторонними библиотеками и Oauth. Django-rest-Auth стоит упомянуть библиотеку для Auth/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 (AKA Pythonic). Хотя больше кода, но в конечном итоге обеспечивает большую гибкость и настройку.

    • Явное лучше, чем неявное.
    • Просто лучше, чем сложный.
    • Комплекс лучше, чем сложный.
    • Квартира лучше, чем вложенная.
    • Рубкий лучше, чем плотный.
    • Читабельности.
    • Особые случаи недостаточно особенные, чтобы нарушить правила.

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

  • Теперь, зная, что Джанго достаточно хорошо, я пойду с ** DRF. **
  • Почему? - Идиоматический джаньо! (Хотя мне это не нравится). Лучшая интеграция OAuth и сторонняя личность (Django-Rest-Auth-мой любимый).

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

  • В основном я работал со стартапами и небольшими фирмами, которые ограничены в бюджете и времени; И нужно доставить что -то быстрое и пригодное для использования. Джанго очень хорошо служит этой цели. (Я совсем не говорю, что Джанго не является масштабируемым. Есть веб -сайты, такие как 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-й Arty Packages, которые помогут вам легче построить ваш API с меньшими проблемами.

Некоторая часть DRF также будет объединена в Django.

DRF предоставляет более лучшие шаблоны и инструменты, чем Django-Tastypie.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top