Django-tastypie ve djangorestframework arasındaki farklar nelerdir? [kapalı]


157

Neden Django uygulamanız için bir API göstermek için birini diğerinden daha iyi kullanıyorsunuz?

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

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

Yanıtlar:


206

Django-rest-framework'ün yazarı olarak, bariz bir önyargı var;) ama umarım bu konuda oldukça objektif bir fikrim var:

TastyPie

  • Torsten'in belirttiği gibi, harika django-haystack ile aynı peep'ler tarafından yazılan bir şeyle çok yanlış gitmeyeceksiniz . Posta listelerinde gördüklerimden Daniel Lindsey ve arkadaşları süper faydalı ve Tastypie kararlı, kapsamlı ve iyi belgelenmiş
  • Excel'ler size makul bir varsayılan davranış seti sunar ve bu stile sahip bir API oluşturmayı inanılmaz derecede kolaylaştırır.

Django REST çerçevesi

  • HTML'ye göz atılabilen, kendini açıklayan API'ler sunar. (EG, öğretici API'ye bakın .) API'da doğrudan tarayıcıda gezinebilme ve etkileşime geçebilme büyük bir kullanılabilirlik kazancıdır.
  • Django'nun deyimlerine yakın durmaya çalışır - Django'nun sınıf temelli görünümlerinin üzerine inşa edilmiştir, vb.
  • Temel mimarinin oldukça güzel inşa edilmiş, ayrıştırılmış vb.

Her durumda, her ikisi de iyidir. Muhtemelen Tastypie'yi size kutudan makul bir dizi varsayılan değer ve REST çerçevesini çok güzel bir şekilde ayrıştırılmış ve esnek olarak nitelendiririm. API'ya çok fazla yatırım yapmayı planlıyorsanız, her biri için dokümanlara ve kod tabanına göz atmayı ve size daha uygun olanı hissetmeye çalışmayı öneririm.

Açıkçası, 'Neden TastyPie?' bölümünde README ve "REST framework 3" .

Ayrıca Mayıs 2012'den itibaren Daniel Greenfeld'in Django için bir API çerçevesi seçme hakkındaki blog yazısı (Bunun büyük REST framework 2.0 sürümünden birkaç ay önce olduğunu belirtmek gerekir).

Ayrıca Aralık 2013 ve Temmuz 2013'ten aynı soruyu soran insanlarla Reddit'te birkaç konu .


7
Btw, Django-rest-framework'ü büyük bir proje için kullanıyoruz ve bu harika! Tatları bir hafta erken test ettim ve DRF ile gitmekten pişmanlık duymuyorum. Belgeleme, maalesef kod ve çerçevenin kendisi ile aynı şey değil, bunun dışında saf mutluluk.
Ben Roberts

Harika şeyler, teşekkürler Ben. Ve evet, ne demek istiyorsun. belgeler kesinlikle adil. Bunu ele almayı planlıyoruz!
Tom Christie

"DjangoCon'dan django-rest-framework üzerindeki yıldırım konuşmam" video bağlantısı öldü!
Mutant

1
@Mutant - Teşekkürler, djangocon.eu 2011 sitesi artık öldü, ancak doğrudan blip.tv'deki videoya bağlandım.
Tom Christie

@TomChristie blip.tv bağlantısı artık öldü! Mı bu doğru video?
Ocak'ta

19

Her ikisi de iyi seçimlerdir.

Filtreler için tastypie kutudan daha güçlüdür. Bir modeli ortaya koyan bir görünümünüz varsa, Django tarzı eşitsizlik filtreleri yapabilirsiniz:

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

veya VEYA sorguları:

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

bunlar djangorestframework ile mümkündür, ancak her model için özel filtreler yazmanız gerekir.

Geri izlemeler için django-rest-framework'ten daha çok etkilendim. Tastypie settings.ADMINS, istisnalar olduğunda e-posta göndermeye çalışır DEBUG = False. Ne zaman DEBUG = True, varsayılan hata mesajı JSON seri hale okumak zordur.


8
Django REST Framework içinde bunun için özel filtreler yazmanıza gerek yoktur. Sağlananları sadece DjangoFilterBackendREST çerçevesi tarafından belgelendiği gibi kullanmanız gerekir : django-rest-framework.org/api-guide/filtering#api-guide
monokrome

13

DÜZENLEME Eski cevap, tastypie artık gerçekten korunmaz. REST yapmak için bir çerçeve seçmeniz gerekiyorsa Django REST çerçevesini kullanın.

Her ikisi arasındaki gerçek farklar hakkında genel bir bilgi için belgelerini okumalısınız. Her ikisi de az çok tam ve oldukça olgun.

Ben şahsen olsa tastypie eğilimindedir. Kurulumu daha kolay görünüyor. Harika olan django-haystack'i yaratan aynı kişilerden yapılır ve django paketlerine göre Django REST çerçevesinden daha fazla kullanılır.


2
Dokümantasyon iyi bir "ikisi arasındaki gerçek farklar hakkında genel bir bakış" değildir.
monokrome

I -1 bunu çünkü önemli ölçüde eskimiş ve şu anda gerçek bir hata var: DRF artık TastyPie'den çok daha fazla kullanılıyor. Bununla birlikte, yazar django paketlerine bağlantı ekledi, bu yüksek kaliteli bir cevap.
texnic

1
Github tarihine ve 2018'de çözülen sorunlara dayanarak, TastyPie'nin hala devam ettiği görülüyor.
Sushil

Tastypie django 1.11 için destekleniyor, bu da gelecekteki projelerin dikkate alınması için rahatlatıcı. django-tastypie.readthedocs.io/en/latest/…
elsadek

5

Bu ilk sorulduğu için DRF'nin güçlenerek güçlendiğini belirtmek gerekir.

Github'daki ikisinden daha aktif (hem taahhütler, yıldızlar, çatallar ve katkıda bulunanlar açısından)

DRF'nin OAuth 2 desteği ve göz atılabilir API'sı vardır.

Dürüst olmak gerekirse, bu son özellik katil. Bir şeyin nasıl çalıştığından emin olmadığında ve 'Go play; öğrenmek 'harika.

En önemlisi, bunu kendi terimleriyle anlamaları ve API'nin gerçekten, kesinlikle, 'belgelerin' söylediklerini kesinlikle yaptığını bilmeleri anlamına gelir. API'lerle entegrasyon dünyasında, bu gerçek tek başına DRF'yi yenmek için bir çerçeve yapar.


Acaba django-tastypie-swaggerbu boşluğu kapatıyor mu?
Victor Sergienko

2

Tastypie ve DRF'nin ikisi de mükemmel seçimlerdir. İkisiyle de yanlış gidemezsiniz. (Ben Piston üzerinde hiç çalışmadım; ve artık bir gün trend değil, bu yüzden bu konuda yorum yapamayacak / yapamayacak. Verildi. Benim düşünceme göre: Sizin (ve teknik ekibinizin) becerileri, bilgisi ve yetenekleri konusunda seçim yapılmalıdır. TastyPie ve DRF'nin sunduklarından ziyade, tabii ki Quora, Facebook veya Google gibi gerçekten büyük bir şey inşa etmiyorsanız.

Şahsen, django'yu düzgün bilmediğim bir zamanda ilk olarak TastyPie üzerinde çalışmaya başladım. Her şey o zaman mantıklıydı, sadece REST ve HTTP'yi çok iyi biliyordu, ancak django hakkında neredeyse hiç veya çok az bilgiye sahipti. Çünkü tek amacım RESTful API'leri mobil cihazlarda tüketilecek hiçbir zaman oluşturmak değildi. Eğer 'Django-new-bie adlı o zamanlar olurum' gibiyseniz, daha fazla TastyPie için düşünmeyin.

Ama yılların varsa Django ile çalışmak dayanan deneyime gelişmiş kavramları (Sınıf Tabanlı Görünümler, Formlar, Model Doğrulayıcı, Sorgu Kümesi, Yönetici ve Model Örnekleri ve bunların birbirleriyle nasıl etkileşime girdiği gibi) kullanarak bunu içeride ve çok rahat bilir. * DRF için gidin. ** DFR, django'nun sınıf tabanlı görüşlerine dayanmaktadır. DRF deyimsel django. Model formları, doğrulayıcılar vb. Yazıyormuşsunuz gibi. (Peki, deyimsel django, deyimsel python'a yakın bir yer değildir. Python uzmanıysanız ancak Django ile deneyiminiz yoksa, başlangıçta idiyomatik django felsefesine ve DRF de önemlidir). DRF, django gibi birçok dahili sihirli yöntemle birlikte gelir. Eğer django büyülü yöntemleri ve felsefesini seviyorsanız ** DRF ** tam size göre.

Şimdi, tam soruyu cevaplamak için:

Tastypie:

Avantajları:

  1. OOB ile çalışmaya başlamak ve temel işlevleri sağlamak kolaydır (kutudan çıkar çıkmaz)
  2. Çoğu zaman CBV'ler, Formlar vb.Gibi Gelişmiş Django kavramlarıyla uğraşmayacaksınız.
  3. Daha okunabilir kod ve daha az büyü!
  4. Modelleriniz ORON OLMADIysa, devam edin.

Dezavantajları:

  1. Deyimsel Django'yu kesinlikle takip etmiyor (zihin iyi python ve django'nun felsefeleri oldukça farklı)
  2. Büyükleştikten sonra API'ları özelleştirmek muhtemelen biraz zor
  3. O-Auth yok

DRF:

  1. Deyimsel django izleyin. (Eğer django tersyüz biliyorsanız ve CBV, Formlar vb ile çok rahat şüphesiz bunun için gidin)
  2. ModelViewSets kullanarak kullanıma hazır REST işlevselliği sağlar. Aynı zamanda, CustomSerializer, APIView, GenericViews vb. Kullanarak özelleştirme için daha fazla kontrol sağlar.
  3. Daha iyi kimlik doğrulama. Özel izin sınıfları yazmak daha kolaydır. 3. parti kütüphaneleri ve OAuth ile çalışmasını sağlamak için çok iyi ve önemli ölçüde çok kolay çalışın. DJANGO-REST-AUTH, Auth / SocialAuthentication / Registration için LIBRARY'den bahsetmeye değer. ( https://github.com/Tivix/django-rest-auth )

Dezavantajları:

  1. Django'yu çok iyi tanımıyorsanız, bunun için gitmeyin.
  2. Sihirli! Biraz zaman büyüyü anlamak çok zor. Çünkü django'nun CBV üzerine yazılmıştır ki bunlar da doğada oldukça karmaşıktır. ( https://code.djangoproject.com/ticket/6735 )
  3. Dik öğrenme eğrisi vardır.

Şahsen bir sonraki projemde ne kullanırım?

  • Artık MAGIC ve Kullanıma Hazır fonksiyonların hayranı değilim. Çünkü hepsi büyük bir maliyetle geliyor. * Proje süresi ve bütçesi üzerinde tüm seçeneklere ve kontrole sahip olduğumu varsayarsak, RESTLess ( https://github.com/toastdriven/restless ) gibi hafif bir şeyle başlayacağım (TastyPie ve django-haystack ( http: //haystacksearch.org/ )). Ve aynı konu için muhtemelen / kesinlikle Flask gibi hafif web çerçevesini seçin .

  • Ama neden? - Daha okunabilir, basit ve yönetilebilir deyimsel python (diğer adıyla pythonic) kodu. Daha fazla kod olmasına rağmen sonunda büyük esneklik ve özelleştirme sağlar.

    • Açık, örtük olmaktan iyidir.
    • Basit, karmaşık olmaktan iyidir.
    • Karmaşık karmaşık olmaktan iyidir.
    • Düz iç içe geçmişten daha iyidir.
    • Seyrek yoğun olmaktan iyidir.
    • Okunabilirlik önemlidir.
    • Özel durumlar kuralları ihlal edecek kadar özel değildir.

Ya Django ve TastyPie ve DRF'den başka seçeneğiniz yoksa?

  • Şimdi, Django'yu oldukça iyi bilerek ** DRF ile gideceğim. **
  • Neden? - deyimsel djagno! (Yine de sevmiyorum). Daha iyi OAuth ve 3. taraf entegrasyonu (django-rest-auth benim favorim).

O zaman neden ilk etapta DRF / TastyPie'yi seçtiniz?

  • Çoğunlukla bütçeye ve zamana sıkı sıkıya bağlı yeni girişimler ve küçük firmalarla çalıştım; ve hızlı ve kullanışlı bir şey sunmanız gerekiyor. Django bu amaca çok iyi hizmet ediyor. (Django'nun ölçeklenebilir olmadığını söylemiyorum. Üzerinde Quora, Disquss, Youtube vb. Gibi web siteleri var.

Umarım daha iyi karar vermene yardımcı olur.

Diğer referanslar - 1. Tastypie Eyaleti ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. django-tastypie ve djangorestframework arasındaki farklar nelerdir? ( Django-tastypie ve djangorestframework arasındaki farklar nelerdir? )


1

Her ikisini de kullandıktan sonra, Django Rest Framwork hakkında sevdiğim (tercih ettiğim) bir şey Django ile çok tutarlı olmasıdır.

Model serileştiricileri yazmak, model formları yazmaya çok benzer. Yerleşik Genel Görünümler, Django'nun HTML genel görünümlerine çok benzer.


1

Django-tastypie artık orijinal yaratıcısı tarafından korunmuyor ve kendi başına yeni bir hafif çerçeve oluşturdu.

Şu anda API'nızı ifşa etmek istiyorsanız django ile django-rest-framework kullanmalısınız.

Büyük şirketler bunu kullanıyor. django-rest-framework django ekibinin çekirdek bir üyesidir ve django-rest-framework'ü korumak için fon alır.

django-rest-framework ayrıca API'lerinizi daha az sorunla daha kolay oluşturmanıza yardımcı olacak çok sayıda büyüyen 3. gösterişli pakete de sahiptir.

Drf'nin bir kısmı da düzgün django'da birleştirilecek.

drf django-tastypie'den daha iyi desen ve araçlar sağlar.

Kısacası, iyi tasarlanmış, bakımlı, finanse edilmiş, büyük organizasyonlar tarafından güvenilen büyük 3. taraf uygulamaları, tastypie üzerinde daha kolay ve daha az ortak plaka vb.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.