Django-tastypie और djangorestframework के बीच क्या अंतर हैं? [बन्द है]


157

अपने Django ऐप के लिए एक एपीआई को उजागर करने के लिए, आप एक दूसरे का उपयोग क्यों करेंगे?

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

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

जवाबों:


206

डीजेंगो-रेस्ट-फ्रेमवर्क के लेखक के रूप में, मुझे एक स्पष्ट पूर्वाग्रह मिल गया है;) लेकिन इस पर मेरी आशा-निष्पक्ष-निष्पक्ष राय कुछ इस प्रकार है:

TastyPie

  • जैसा कि टॉर्स्टन ने कहा, आप भयानक django-haystack के समान झांकियों द्वारा लिखी गई किसी चीज़ के साथ बहुत दूर नहीं जा रहे हैं । मैंने उनकी मेलिंग सूची में जो देखा है, उससे डैनियल लिंडसे एट अल सुपर-सहायक हैं, और टेस्टीपी स्थिर, व्यापक और अच्छी तरह से तैयार है
  • आपको डिफ़ॉल्ट व्यवहार का एक समझदार सेट देने और उस शैली के साथ एपीआई बनाने में एक्सेल अविश्वसनीय रूप से आसान है।

Django बाकी ढांचे

  • आपको HTML ब्राउज़ करने में सक्षम आत्म-वर्णन करने वाले API देता है। (जैसे, ट्यूटोरियल एपीआई देखें ।) ब्राउज़र में सीधे एपीआई के साथ नेविगेट और बातचीत करने में सक्षम होना एक बड़ी प्रयोज्य जीत है।
  • Django के मुहावरों के करीब रहने की कोशिश करता है - Django के वर्ग आधारित विचारों के शीर्ष पर बनाया गया, आदि ... (जबकि TangoPie Django के CBVs के अस्तित्व में आने से पहले आया था, इसलिए इसका उपयोग खुद के वर्ग-आधारित विचार कार्यान्वयन है)
  • मुझे लगता है कि अंतर्निहित वास्तुकला बहुत अच्छी तरह से निर्मित, decoupled आदि है ...

किसी भी मामले में, दोनों अच्छे हैं। मैं शायद तस्सपेई का चरित्र-चित्रण करूँगा, क्योंकि आप बॉक्स से बाहर एक डिफॉल्ट का एक समझदार सेट दे रहे हैं, और REST फ्रेमवर्क बहुत अच्छी तरह से decoupled और लचीला होने के नाते। यदि आप एपीआई में बहुत समय निवेश करने की योजना बना रहे हैं, तो मैं आपको प्रत्येक के डॉक्स और कोडबेस के माध्यम से ब्राउज़ करने की सलाह दूंगा और यह महसूस करने की कोशिश करूंगा कि कौन सा सूट आपको अधिक सूट करता है।

जाहिर है, वहाँ भी 'क्यों टेस्टी?' इसमें खंड README, और 'REST फ्रेमवर्क 3' है।

डैनियल ग्रीनफेल्ड के ब्लॉग पोस्ट को भी देखें, जो Django के लिए एक एपीआई फ्रेमवर्क का चयन कर रहा हैमई 2012 से (वर्थ ध्यान दें कि यह अभी भी बड़े REST फ्रेमवर्क 2.0 रिलीज से कुछ महीने पहले था)।

दिसंबर 2013 और जुलाई 2013 से लोगों से यही सवाल पूछने वाले रेडिट पर कुछ सूत्र भी ।


7
Btw, हम एक बड़ी परियोजना के लिए Django- बाकी ढांचे का उपयोग कर रहे हैं, और इसके भयानक! मैंने एक सप्ताह के लिए जल्दबाजी में टेस्टी-टेस्टी शुरू किया, और डीआरएफ के साथ जाने के बारे में कोई पछतावा नहीं है। प्रलेखन दुर्भाग्य से कोड और रूपरेखा के बराबर नहीं है, लेकिन इसके अलावा, शुद्ध आनंद।
बेन रॉबर्ट्स

बढ़िया सामान, धन्यवाद बेन। और हाँ, तुम्हारी बात फिर से। प्रलेखन निश्चित रूप से उचित है। संबोधित करने की योजना!
टॉम क्रिस्टी

"DjangoCon से django-rest-Framework पर मेरी हल्की बातें" वीडियो लिंक मर चुका है!
म्यूटेंट

1
@Mutant - धन्यवाद, djangocon.eu 2011 साइट अब मृत हो गई है, लेकिन मैं सीधे blip.tv पर वीडियो से जुड़ा हुआ हूं।
टॉम क्रिस्टी

@TomChristie blip.tv का लिंक अब मर चुका है! क्या यह सही वीडियो है?
केविन्स

19

दोनों अच्छे विकल्प हैं।

फ़िल्टर के लिए, टैस्टिपी अधिक शक्तिशाली आउट-ऑफ-द-बॉक्स है। यदि आपके पास एक मॉडल को उजागर करने वाला एक दृश्य है, तो आप Django- शैली की असमानता फ़िल्टर कर सकते हैं:

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

या प्रश्न:

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

ये djangorestframework से संभव हैं, लेकिन आपको प्रत्येक मॉडल के लिए कस्टम फ़िल्टर लिखना होगा।

ट्रेसबैक के लिए, मैं django-rest- फ्रेमवर्क से अधिक प्रभावित हुआ हूं। Tastypie settings.ADMINSजब अपवादों पर ईमेल करने की कोशिश करता है DEBUG = False। जब DEBUG = True, डिफ़ॉल्ट त्रुटि संदेश को JSON अनुक्रमित किया जाता है, जिसे पढ़ना कठिन है।


8
आपको Django REST फ्रेमवर्क में इसके लिए कस्टम फ़िल्टर लिखने की आवश्यकता नहीं है। आपको केवल DjangoFilterBackendREST फ्रेमवर्क द्वारा प्रलेखित के रूप में दिए गए उपयोग की आवश्यकता है: django-rest-framework.org/api-guide/filtering#api-guide
monokrome

13

EDIT आउटडेटेड उत्तर, tastypie वास्तव में अब बनाए नहीं रखा गया है। अगर आपको REST करने के लिए कोई फ्रेमवर्क चुनना है तो Django REST फ्रेमवर्क का उपयोग करें।

उन दोनों के बीच वास्तविक अंतर के बारे में अवलोकन के लिए, आपको उनके प्रलेखन को पढ़ना चाहिए। वे कम या ज्यादा पूर्ण और काफी परिपक्व दोनों हैं।

मैं व्यक्तिगत रूप से हालांकि स्वाद लेने के लिए जाता हूं। इसे लगाना आसान लगने लगा है। यह उन्हीं लोगों से किया गया है जिन्होंने django-haystack का निर्माण किया जो भयानक है और django-package के अनुसार इसका उपयोग Django REST फ्रेमवर्क से अधिक किया जाता है।


2
प्रलेखन एक अच्छा "उन दोनों के बीच वास्तविक अंतर के बारे में अवलोकन" बिल्कुल नहीं है।
मोनोक्रोम

मैं -1 इसलिए क्योंकि यह काफी पुराना है और अब तक एक तथ्यात्मक गलती है: DRF अब टेस्टीपी की तुलना में बहुत अधिक उपयोग किया जाता है। उस लेखक ने कहा, django- संकुल के लिंक को शामिल किया है, यह एक उच्च गुणवत्ता वाला उत्तर है।
टेक्निक

1
गितुब इतिहास और 2018 में हल किए गए मुद्दों के आधार पर, ऐसा लगेगा कि टेस्टीपी वास्तव में अभी भी कायम है।
सुशील

Tastypie को django 1.11 के लिए समर्थन दिया गया है, यह भविष्य की परियोजनाओं पर विचार करने के लिए आरामदायक है। django-tastypie.readthedocs.io/en/latest/…
elsadek

5

यह ध्यान देने योग्य है कि चूंकि यह पहली बार पूछा गया था कि डीआरएफ ताकत से ताकत में चला गया है।

यह गितुब पर दोनों का अधिक सक्रिय है (दोनों ही तरह के कमिट, सितारे, कांटे और योगदानकर्ता)

DRF में OAuth 2 सपोर्ट और ब्राउनिंग API है।

मेरे लिए ईमानदारी से कि अंतिम विशेषता हत्यारा है। जब वे कुछ काम करते हैं और कहते हैं, '' यकीन नहीं होता है कि मेरे सभी फ्रंट-एंड devs को ब्राउज़ करने योग्य API पर इंगित किया जा सकता है; पता लगाना 'शानदार है।

कम से कम क्योंकि इसका मतलब है कि वे इसे अपनी शर्तों पर समझते हैं और जानते हैं कि एपीआई वास्तव में, निश्चित रूप से, बिल्कुल वही करता है जो 'दस्तावेज' कहता है। एपीआई के साथ एकीकरण की दुनिया में, यह तथ्य अकेले डीआरएफ को हरा देने की रूपरेखा बनाता है।


मुझे आश्चर्य है कि अगर django-tastypie-swaggerइस अंतर को बंद करता है?
विक्टर सर्जीनको

2

खैर, Tastypie और DRF दोनों बेहतरीन विकल्प हैं। आप बस दोनों में से किसी के साथ गलत नहीं कर सकते । (मैंने कभी पिस्टन पर काम नहीं किया है; और इसकी तरह का अब और अधिक चलन नहीं है। अब एक दिन ऐसा नहीं होगा / इस पर कोई टिप्पणी नहीं कर सकता। मेरी विनम्र राय में: चुनाव आपके (और आपकी तकनीकी टीम के) कौशल, ज्ञान और क्षमताओं पर होना चाहिए। इसके बजाय टेस्टीपी और डीआरएफ क्या प्रदान करता है, जब तक कि ऑफ-कोर्स आप क्वोरा, फेसबुक या गूगल की तरह कुछ बड़ा निर्माण नहीं कर रहे हैं।

व्यक्तिगत रूप से, मैंने उस समय TastyPie पर पहली बार काम करना शुरू किया जब मुझे django भी ठीक से नहीं जानता था। यह सब उस समय समझ में आया, केवल रीस्ट और एचटीटीपी को अच्छी तरह से जानते हुए भी, लेकिन django के बारे में लगभग कोई जानकारी नहीं है। क्योंकि मेरा एकमात्र उद्देश्य कुछ ही समय में RESTful APIs का निर्माण करना था जो कि मोबाइल उपकरणों में खपत किए जाने थे। इसलिए यदि आप ऐसे हैं जैसे 'मैं उस समय django-new-bie कहलाता हूं', तो TastyPie के बारे में अधिक न सोचें।

लेकिन अगर आपके पास कई साल हैं Django के साथ काम करने का का अनुभव है, तो यह उन्नत अवधारणाओं (जैसे क्लास बेस्ड व्यू, फॉर्म, मॉडल वैलिडेटर, क्वेरीसेट, मैनेजर और मॉडल इंस्टेंस और कैसे वे एक-दूसरे के साथ बातचीत करते हैं) का उपयोग करके अंदर और बाहर बहुत आरामदायक जानते हैं, * * DRF के लिए जाएं। ** DFR, डिंगैंगो के वर्ग आधारित विचारों पर आधारित है। DRF मुहावरेदार django है। इसकी तरह आप मॉडल फॉर्म, वैलिडेटर आदि लिख रहे हैं (खैर, मुहावरा django मुहावरेदार अजगर के पास नहीं है। यदि आप अजगर विशेषज्ञ हैं, लेकिन Django के साथ कोई अनुभव नहीं है, तो शायद आपको शुरू में मुहावरेदार django दर्शन में फिट होने के लिए मुश्किल हो सकता है। वह बात DRF भी)। DRF django की तरह ही बहुत सारे इनबिल्ट मैजिक मेथड के साथ आता है। यदि आप django जादुई तरीकों और दर्शन से प्यार करते हैं तो ** DRF ** आपके लिए है।

अब, केवल सटीक प्रश्न का उत्तर देने के लिए:

Tastypie:

लाभ:

  1. OOB (बॉक्स से बाहर) बुनियादी कार्यशीलता प्रदान करना आरंभ करना
  2. अधिकांश समय आप उन्नत Django अवधारणाओं जैसे CBV, फ़ॉर्म आदि के साथ काम नहीं करेंगे
  3. अधिक पठनीय कोड और जादू की कम!
  4. यदि आपके मॉडल गैर-ओआरएम हैं, तो इसके लिए जाएं।

नुकसान:

  1. मुहावरेदार Django का कड़ाई से पालन नहीं करते (मन अच्छी तरह से अजगर और django के दर्शन काफी अलग हैं)
  2. एक बार बड़ा होने के बाद एपीआई को कस्टमाइज़ करने के लिए शायद थोड़ा मुश्किल है
  3. कोई ओ-प्रामाणिक नहीं

डीआरएफ:

  1. मुहावरेदार django का पालन करें। (यदि आप django को अंदर से जानते हैं, और CBV, फ़ॉर्म आदि के साथ बहुत सहज हैं, तो इसके लिए कोई संदेह नहीं है)
  2. ModelViewSets का उपयोग करते हुए बॉक्स REST कार्यक्षमता प्रदान करता है। इसी समय, CustomSerializer, APIView, GenericViews आदि का उपयोग करके अनुकूलन के लिए अधिक नियंत्रण प्रदान करता है।
  3. बेहतर प्रमाणीकरण। कस्टम अनुमति कक्षाएं लिखने में आसान। 3rd पार्टी लाइब्रेरी और OAuth के साथ काम करने के लिए बहुत आसान और महत्वपूर्ण रूप से बहुत आसान काम। DJANGO-REST-AUTH, LIBRARY को प्रामाणिक / सामाजिकता / पंजीकरण के लिए ध्यान देने योग्य है। ( https://github.com/Tivix/django-rest-auth )

नुकसान:

  1. यदि आप Django को बहुत अच्छी तरह से नहीं जानते हैं, तो इसके लिए मत जाओ।
  2. जादू! जादू को समझने के लिए कुछ समय बहुत मुश्किल है। क्योंकि यह django के CBV के ऊपर लिखा गया है, जो प्रकृति में काफी जटिल हैं। ( https://code.djangoproject.com/ticket/6735 )
  3. खड़ी सीखने की अवस्था है।

व्यक्तिगत रूप से मैं अपनी अगली परियोजना में क्या उपयोग करूंगा?

  • अब, मैं MAGIC और आउट-ऑफ-बॉक्स कार्यात्मकता का प्रशंसक नहीं हूं। क्योंकि वे सभी एक * महान लागत पर आते हैं। * यह मानते हुए कि मेरे पास परियोजना समय और बजट पर सभी विकल्प हैं और नियंत्रण है, मैं RESTLess ( https://github.com/toastdriven/restless ) जैसे कुछ हल्के वजन के साथ शुरू करूंगा (TastyPie के निर्माता और dango-haystack द्वारा बनाया गया) ( http: //haystacksearch.org/ ))। और इसी बात के लिए शायद / निश्चित रूप से फ्लास्क जैसे हल्के वेब ढांचे का चयन करें

  • पर क्यों? - अधिक पठनीय, सरल और प्रबंधनीय मुहावरेदार अजगर (उर्फ पायथोनिक) कोड। हालांकि अधिक कोड लेकिन अंततः महान लचीलापन और अनुकूलन प्रदान करते हैं।

    • निहितार्थ की तुलना में स्पष्ट है।
    • सरल जटिल से बेहतर है।
    • कॉम्प्लेक्स जटिल से बेहतर है।
    • फ्लैट नेस्टेड से बेहतर है।
    • विरल घने से बेहतर है।
    • पठनीयता मायने रखती है।
    • नियम तोड़ने के लिए विशेष मामले पर्याप्त नहीं हैं।

क्या होगा अगर आपके पास केवल Django और TastyPie और DRF में से कोई विकल्प नहीं है?

  • अब, Django को काफी अच्छी तरह से जानते हुए, मैं ** DRF के साथ जाऊंगा। **
  • क्यों? - मुहावरेदार डीजेगैनो! (हालांकि मुझे यह पसंद नहीं है)। बेहतर OAuth और 3 पार्टी एकीकरण (django-बाकी-मेरा पसंदीदा है)।

फिर आपने पहले स्थान पर DRF / TastyPie को क्यों चुना?

  • ज्यादातर मैंने स्टार्टअप्स और छोटी फर्मों के साथ काम किया है, जो बजट और समय पर तंग हैं; और जल्दी और उपयोगी कुछ देने की जरूरत है। Django इस उद्देश्य की बहुत अच्छी तरह से सेवा करता है। (मैं यह बिल्कुल नहीं कह रहा हूं कि django स्केलेबल नहीं है। Quora, Disquss, Youtube जैसी वेबसाइटें इस पर चलती हैं। लेकिन सभी को इसके लिए समय और अधिक औसत कौशल की आवश्यकता होती है)

मुझे उम्मीद है, यह आपको बेहतर निर्णय लेने में मदद करेगा।

अन्य सन्दर्भ - 1. द स्टेट ऑफ़ टास्टीपी ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. django-tastypie और djangoradframework में क्या अंतर हैं? ( Django-tastypie और djangorestframework के बीच क्या अंतर हैं? )


1

दोनों का उपयोग करने के बाद, एक बात जो मुझे Django रेस्ट फ्रैमवर्क के बारे में पसंद (पसंद) है वह यह है कि Django के साथ बहुत अनुरूप है।

मॉडल धारावाहिक लिखना लेखन मॉडल रूपों के समान है। जेनेरिक व्यूज में बनाया गया HTML के लिए Django के सामान्य विचारों के समान है।


1

Django-tastypie अब इसे मूल निर्माता द्वारा बनाए नहीं रखा गया है और उसने अपना खुद का एक नया लाइट वेट फ्रेमवर्क बनाया है।

वर्तमान में आपको django के साथ django-rest-Framework का उपयोग करना चाहिए यदि आप अपने API को उजागर करने के लिए तैयार हैं।

बड़े निगम इसका उपयोग कर रहे हैं। django-rest-ढांचा django टीम का एक मुख्य सदस्य है और उसे django-rest-ढांचा बनाए रखने के लिए धन मिलता है।

django- रेस्ट-फ्रेमवर्क में भी कभी-कभी बढ़ते हुए 3 आरटीआई पैकेज होते हैं, जो आपकी परेशानी के साथ आपके एपीआई के अधिक आसानी से निर्माण में मदद करेंगे।

ड्रफ का कुछ हिस्सा उचित रूप से django में विलय कर दिया जाएगा।

drf अधिक बेहतर पैटर्न और उपकरण प्रदान करता है फिर django-tastypie।

संक्षेप में यह अच्छी तरह से डिज़ाइन किया गया है, अच्छी तरह से बनाए रखा गया है, वित्त पोषित है, विशाल 3 पार्टी ऐप्स प्रदान करता है, बड़े संगठनों द्वारा भरोसा किया जाता है, आसान और कम बॉयलरप्लेट आदि।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.