django-Deliciouspie และ djangorestframework แตกต่างกันอย่างไร? [ปิด]


157

เหตุใดคุณจึงต้องใช้อันอื่นในการเปิดเผย API สำหรับแอพ Django ของคุณ

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

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

คำตอบ:


206

ในฐานะผู้เขียน django-rest-framework ฉันมีอคติชัดเจน;) แต่ความเห็นที่หวังว่าจะเป็นไปได้

TastyPie

  • ในฐานะที่เป็น Torsten สังเกตคุณจะไม่ไปไกลอย่างผิดปกติกับบางสิ่งบางอย่างที่เขียนโดย peeps เดียวกันเป็นที่น่ากลัวDjango-กองหญ้า จากสิ่งที่ฉันเห็นในรายชื่อผู้รับจดหมายของพวกเขา Daniel Lindsey และคณะเป็นประโยชน์อย่างยิ่งและ Tastypie นั้นมีเสถียรภาพครอบคลุมและจัดทำเป็นเอกสารอย่างดี
  • เก่งในการให้คุณมีพฤติกรรมเริ่มต้นที่สมเหตุสมผลและสร้าง API ด้วยสไตล์นั้นง่ายอย่างเหลือเชื่อ

กรอบ Django REST

  • ช่วยให้คุณสามารถเรียกดู API ที่อธิบายตัวเองด้วย HTML ได้ (EG ดูที่บทช่วยสอน API ) ความสามารถในการนำทางและโต้ตอบกับ API โดยตรงในเบราว์เซอร์ถือเป็นชัยชนะการใช้งานครั้งใหญ่
  • พยายามที่จะอยู่ใกล้กับสำนวน Django ตลอด - สร้างขึ้นจากมุมมองตามระดับของ Django และอื่น ๆ (ในขณะที่ TastyPie มาพร้อมก่อนที่ CBVs ของ Django จะมีอยู่ดังนั้นใช้การดำเนินการตามมุมมองของชั้นเรียนเอง)
  • ฉันต้องการที่จะคิดว่าสถาปัตยกรรมพื้นฐานนั้นถูกสร้างขึ้นอย่างสวยงามแยกชิ้นส่วน ฯลฯ ...

ไม่ว่าในกรณีใดทั้งสองก็ดี ฉันอาจจะอธิบายลักษณะของ Tastypie เพื่อให้คุณมีชุดค่าเริ่มต้นที่สมเหตุสมผลและกรอบการทำงานของ REST ว่ามีการแยกและยืดหยุ่นดีมาก หากคุณวางแผนที่จะลงทุนเวลาจำนวนมากใน API ฉันขอแนะนำให้เรียกดูเอกสารและโค้ดเบสของแต่ละรายการและพยายามทำความเข้าใจกับสิ่งที่เหมาะกับคุณมากกว่า

เห็นได้ชัดว่ามี'Why TastyPie' อยู่ด้วย ในส่วนของมัน README และ'REST กรอบ 3'

ดูโพสต์บล็อกของ Daniel Greenfeld เกี่ยวกับการเลือกเฟรมเวิร์ก API สำหรับ Djangoตั้งแต่เดือนพฤษภาคม 2012 (น่าสังเกตว่านี่ยังไม่กี่เดือนก่อนที่ REST Framework 2.0 จะวางจำหน่ายขนาดใหญ่)

นอกจากนี้ยังมีคู่ของกระทู้เมื่อ Reddit กับ folks ถามคำถามเดียวกันนี้จากธันวาคม 2013และกรกฎาคม 2013


7
Btw เราได้ใช้ Django-rest-framework สำหรับโครงการสำคัญและยอดเยี่ยมมาก! ฉันทดสอบขับอร่อย ๆ เป็นเวลาหนึ่งสัปดาห์และไม่เสียใจที่จะไปกับ DRF น่าเสียดายที่เอกสารไม่ได้ขึ้นอยู่กับรหัสและกรอบงานของตัวเอง แต่อย่างอื่นนอกจากความสุขที่บริสุทธิ์
เบ็นโรเบิร์ตส์

สิ่งที่ยอดเยี่ยมขอบคุณเบ็น และ yup จุดของคุณอีกครั้ง เอกสารเป็นธรรมอย่างแน่นอน วางแผนที่จะอยู่ที่!
Tom Christie

"ฟ้าผ่าของฉันจาก DjangoCon บน django-rest-framework" ลิงก์วิดีโอตายแล้ว!
เปลี่ยนแปลง

1
@Mutant - ขอบคุณไซต์ djangocon.eu 2011 ตอนนี้ตายไปแล้ว แต่ฉันได้เชื่อมโยงโดยตรงกับวิดีโอบน blip.tv
Tom Christie

@TomChristie ลิงค์ไปยัง blip.tv ตอนนี้ตายแล้ว! คือนี้วิดีโอที่ถูกต้องหรือไม่
kevins

19

ทั้งสองเป็นทางเลือกที่ดี

สำหรับฟิลเตอร์นั้น Deliciouspie นั้นมีประสิทธิภาพมากขึ้นนอกกรอบ หากคุณมีมุมมองที่เปิดเผยแบบจำลองคุณสามารถทำฟิลเตอร์อสมการสไตล์ Django ได้:

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

หรือการสืบค้น OR:

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

สิ่งเหล่านี้เป็นไปได้ด้วย djangorestframework แต่คุณต้องเขียนตัวกรองที่กำหนดเองสำหรับแต่ละรุ่น

สำหรับการย้อนกลับฉันรู้สึกประทับใจมากกับ django-rest-framework Tastypie พยายามที่จะส่งอีเมลในข้อยกเว้นเมื่อsettings.ADMINS DEBUG = Falseเมื่อDEBUG = Trueใดข้อความแสดงข้อผิดพลาดเริ่มต้นจะถูกทำให้เป็นลำดับ JSONซึ่งอ่านยาก


8
คุณไม่จำเป็นต้องเขียนตัวกรองที่กำหนดเองสำหรับสิ่งนี้ใน Django REST Framework คุณเพียงแค่ต้องใช้DjangoFilterBackendเอกสารที่จัดทำตามกรอบ REST ที่นี่: django-rest-framework.org/api-guide/filtering#api-guide
monokrome

13

แก้ไขคำตอบที่ล้าสมัย Deliciouspie ไม่ได้รับการดูแลรักษาอีกต่อไป ใช้กรอบงาน Django REST หากคุณต้องเลือกกรอบงานที่ต้องทำ REST

สำหรับภาพรวมเกี่ยวกับความแตกต่างที่แท้จริงระหว่างทั้งคู่คุณควรอ่านเอกสารประกอบ พวกเขาทั้งสมบูรณ์มากกว่าหรือน้อยกว่าและค่อนข้างเป็นผู้ใหญ่

โดยส่วนตัวแล้วฉันมักจะอร่อย ดูเหมือนว่าจะง่ายกว่าในการตั้งค่า มันทำมาจากคนกลุ่มเดียวกันที่สร้างdjango-haystackซึ่งยอดเยี่ยมและตามแพ็คเกจ djangoมันถูกใช้มากกว่าเฟรมเวิร์ก Django REST


2
เอกสารประกอบนั้นไม่ใช่ "ภาพรวมที่ดีเกี่ยวกับความแตกต่างที่แท้จริงระหว่างทั้งสอง" เลย
ขาวดำ

ฉัน -1 นี่เพราะมันล้าสมัยอย่างมีนัยสำคัญและตอนนี้มีข้อผิดพลาดจริง: DRF ตอนนี้ใช้มากกว่า TastyPie ที่กล่าวว่าผู้เขียนได้รวมลิงค์ไปยัง django-packages มันเป็นคำตอบที่มีคุณภาพสูง
texnic

1
จากประวัติและปัญหา Github ที่ได้รับการแก้ไขในปี 2018 ดูเหมือนว่า TastyPie จะยังคงรักษาไว้อย่างแน่นอน
Sushil

Tastypie ได้รับการสนับสนุนสำหรับ django 1.11 นี่คือความสะดวกสบายสำหรับการพิจารณาโครงการในอนาคต django-tastypie.readthedocs.io/en/latest/…
elsadek

5

เป็นที่น่าสังเกตว่าตั้งแต่ครั้งแรกที่มีการถาม DRF นั้นได้หายไปจากความแข็งแกร่งไปสู่ความแข็งแกร่ง

มันใช้งานมากขึ้นของทั้งสองใน GitHub (ทั้งในแง่ของความมุ่งมั่น, ดาว, ส้อมและผู้มีส่วนร่วม)

DRF มีการสนับสนุน OAuth 2 และ API ที่เรียกดูได้

สุจริตสำหรับฉันว่าคุณสมบัติสุดท้ายคือนักฆ่า ความสามารถในการชี้ devs front-end ทั้งหมดของฉันไปที่ API ที่เรียกดูได้เมื่อพวกเขาไม่แน่ใจว่ามีอะไรทำงานและพูดว่า 'Go play; หา 'ที่ยอดเยี่ยม

ไม่น้อยเพราะมันหมายความว่าพวกเขาเข้าใจมันด้วยเงื่อนไขของตัวเองและรู้ว่า API จริง ๆ แล้วทำสิ่งที่ 'เอกสาร' บอกอย่างแน่นอน ในโลกของการรวมเข้ากับ API ความจริงเพียงอย่างเดียวทำให้ DRF เป็นกรอบในการเอาชนะ


ฉันสงสัยว่าdjango-tastypie-swaggerปิดช่องว่างนี้หรือไม่
Victor Sergienko

2

ทั้ง Tastypie และ DRF เป็นตัวเลือกที่ยอดเยี่ยม คุณไม่สามารถไปผิดกับพวกเขาอย่างใดอย่างหนึ่ง (ฉันไม่ได้ทำงานกับ Piston มาก่อนและมันก็ไม่ได้รับความนิยมอีกต่อไปแล้ววันนี้ดังนั้นจะไม่ / ไม่สามารถแสดงความคิดเห็นได้ Taken for Granted.) ในความเห็นที่ต่ำต้อยของฉัน: ควรเลือกทักษะความรู้และความสามารถของคุณ (และทีมเทคโนโลยีของคุณ) แทนที่จะเป็นสิ่งที่ TastyPie และ DRF เสนอให้นอกจากว่าคุณกำลังสร้างสิ่งที่ยิ่งใหญ่อย่าง Quora, Facebook หรือ Google

โดยส่วนตัวแล้วฉันเริ่มทำงานครั้งแรกกับ TastyPie ในเวลาที่ฉันไม่รู้จัก django อย่างถูกต้อง ทุกอย่างสมเหตุสมผลในเวลานั้นเพียงรู้ว่า REST และ HTTP เป็นอย่างดี แต่แทบไม่มีความรู้เกี่ยวกับ django เพราะความตั้งใจเพียงอย่างเดียวของฉันคือการสร้าง RESTful API ในเวลาไม่นานซึ่งจะต้องใช้ในอุปกรณ์มือถือ ดังนั้นถ้าคุณเป็นเหมือน 'ฉันเกิดขึ้นในเวลานั้นเรียกว่า django-new-bie'อย่าคิดว่าไปมากสำหรับ TastyPie

แต่ถ้าคุณมีเวลาหลายปีประสบการณ์การทำงานกับ Djangoรู้ได้จากภายในและสะดวกสบายในการใช้แนวคิดขั้นสูง (เช่น Class Based Views, Forms, Model Validator, QuerySet, Manager และ Model Instances และวิธีที่พวกเขาโต้ตอบกับคนอื่น) * * ไปที่ DRF ** DFR ขึ้นอยู่กับมุมมองที่อิงจากคลาสของ django DRF คือ django ที่มีลักษณะเหมือนจริง มันเหมือนกับว่าคุณกำลังเขียนรูปแบบโมเดล, เครื่องมือตรวจสอบความถูกต้อง ฯลฯ (ดี, django สำนวนไม่มีที่ใกล้กับงูหลาม idiomatic ถ้าคุณเป็นผู้เชี่ยวชาญงูหลาม แต่ไม่มีประสบการณ์กับ Django แล้วคุณอาจมีช่วงเวลาที่ยากลำบากพอดีกับปรัชญา django สำนวนและ เรื่องนั้น DRF ก็เช่นกัน) DRF มาพร้อมกับวิธีการสร้างเวทมนตร์มากมายเช่นเดียวกับ django หากคุณรักวิธีการและปรัชญา django ที่มีมนต์ขลัง ** DRF ** เหมาะสำหรับคุณ

ตอนนี้เพียงเพื่อตอบคำถามที่แน่นอน:

Tastypie:

ข้อดี:

  1. ง่ายต่อการเริ่มต้นและให้ฟังก์ชั่นพื้นฐาน OOB (นอกกรอบ)
  2. เวลาส่วนใหญ่คุณจะไม่เกี่ยวข้องกับแนวคิดขั้นสูง Django เช่น CBVs, แบบฟอร์ม ฯลฯ
  3. รหัสที่อ่านได้มากขึ้นและมีเวทมนตร์น้อยลง!
  4. หากโมเดลของคุณไม่ใช่แบบ ORM ให้ไปเลย

ข้อเสีย:

  1. ไม่ปฏิบัติตามอย่างเคร่งครัดสำนวน Django (ใจดีหลามและปรัชญาของ django แตกต่างกันมาก)
  2. อาจจะยากสักหน่อยในการปรับแต่ง API เมื่อคุณเริ่มใช้งาน
  3. ไม่มี O-Auth

DRF:

  1. ติดตาม django ที่เป็นสำนวน (ถ้าคุณรู้จัก django ด้านในและสะดวกสบายกับ CBV แบบฟอร์มและอื่น ๆ โดยไม่ต้องสงสัยเลย)
  2. จัดเตรียมฟังก์ชันการทำงาน REST นอกกรอบโดยใช้ ModelViewSets ในเวลาเดียวกันให้การควบคุมที่ดีขึ้นสำหรับการปรับแต่งโดยใช้ CustomSerializer, APIView, GenericViews เป็นต้น
  3. การตรวจสอบที่ดีกว่า เขียนคลาสการอนุญาตที่กำหนดเองได้ง่ายขึ้น ทำงานได้ดีมากและที่สำคัญง่ายมากที่จะทำให้มันทำงานกับห้องสมุดบุคคลที่สามและ OAuth DJANGO-REST-AUTH มีมูลค่าการพูดถึงห้องสมุดสำหรับการรับรองความถูกต้อง / การลงทะเบียน ( https://github.com/Tivix/django-rest-auth )

ข้อเสีย:

  1. ถ้าคุณไม่รู้ Django ดีมากอย่าไปทำแบบนี้
  2. มายากล! บางครั้งยากที่จะเข้าใจเวทมนตร์ เนื่องจากมันถูกเขียนขึ้นบน CBV ของ django ซึ่งค่อนข้างซับซ้อนในธรรมชาติ ( https://code.djangoproject.com/ticket/6735 )
  3. มีเส้นโค้งการเรียนรู้ที่สูงชัน

โดยส่วนตัวฉันจะใช้อะไรในโครงการต่อไป

  • ตอนนี้ฉันไม่ได้เป็นแฟนของ MAGIC และฟังก์ชั่นนอกกรอบอีกต่อไป เพราะสิ่งเหล่านี้มาพร้อมกับราคาที่ยอดเยี่ยม * สมมติว่าฉันมีตัวเลือกทั้งหมดและควบคุมเวลาและงบประมาณของโครงการฉันจะเริ่มด้วยน้ำหนักเบาอย่าง RESTLess ( https://github.com/toastdriven/restless ) (สร้างโดยผู้สร้าง TastyPie และ django-haystack ( http: //haystacksearch.org/ )) และสำหรับเรื่องเดียวกันอาจจะ / เลือกเฟรมเวิร์กเว็บที่มีน้ำหนักเบาอย่างFlask

  • แต่ทำไม - รหัสหลามที่อ่านง่ายเรียบง่ายและจัดการได้ง่ายขึ้น (aka pythonic) แม้ว่ารหัสเพิ่มเติม แต่ในที่สุดก็มีความยืดหยุ่นที่ดีและปรับแต่ง

    • ชัดเจนดีกว่าโดยปริยาย
    • เรียบง่ายดีกว่าซับซ้อน
    • คอมเพล็กซ์ดีกว่าซับซ้อน
    • แบนดีกว่าซ้อนกัน
    • เบาบางดีกว่าหนาแน่น
    • จำนวนการอ่าน
    • กรณีพิเศษไม่พิเศษพอที่จะทำลายกฎ

ถ้าคุณไม่มีทางเลือกนอกจาก Django และหนึ่งใน TastyPie และ DRF ล่ะ?

  • ตอนนี้รู้ดีเจจังพอสมควรแล้วฉันจะไปกับ DRF ** **
  • ทำไม? - djagno เป็นสำนวน! (ฉันไม่ชอบมัน) การรวม OAuth ที่ดีขึ้นและการรวมบุคคลที่ 3 (django-rest-auth เป็นรายการโปรดของฉัน)

ถ้าอย่างนั้นทำไมคุณถึงเลือก DRF / TastyPie ตั้งแต่แรก?

  • ส่วนใหญ่ฉันได้ทำงานกับ บริษัท ที่เพิ่งเริ่มต้นและ บริษัท ขนาดเล็กซึ่งมีงบประมาณและเวลา จำกัด และจำเป็นต้องส่งสิ่งที่รวดเร็วและใช้งานได้ Django ตอบสนองวัตถุประสงค์นี้ได้เป็นอย่างดี (ฉันไม่ได้เลยบอกว่า django นั้นไม่สามารถปรับขนาดได้มีเว็บไซต์อย่าง Quora, Disquss, Youtube และอื่น ๆ ทำงานอยู่ แต่ทั้งหมดนั้นต้องใช้เวลาและทักษะเฉลี่ยมากกว่า)

ฉันหวังว่ามันจะช่วยให้คุณตัดสินใจได้ดีขึ้น

การอ้างอิงอื่น ๆ - 1. The Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. ความแตกต่างระหว่าง django-Deliciouspie และ djangorestframework คืออะไร? ( django-Deliciouspie และ djangorestframework แตกต่างกันอย่างไร? )


1

เมื่อใช้ทั้งสองอย่างสิ่งหนึ่งที่ฉันชอบ (แนะนำ) เกี่ยวกับ Django Rest Framwork คือว่าสอดคล้องกับ Django มาก

การเขียนแบบจำลองอนุกรมคล้ายกันมากกับการเขียนแบบฟอร์ม มุมมองทั่วไปในตัวนั้นคล้ายกับมุมมองทั่วไปของ Django สำหรับ HTML


1

Django-Deliciouspie ไม่ได้รับการดูแลรักษาโดยผู้สร้างดั้งเดิมและเขาสร้างกรอบน้ำหนักเบาใหม่ของเขาเอง

ในปัจจุบันคุณควรใช้ django-rest-framework กับ django ถ้าคุณยินดีที่จะเปิดเผย API ของคุณ

องค์กรขนาดใหญ่กำลังใช้งานอยู่ django-rest-framework เป็นสมาชิกหลักของทีม django และเขาได้รับเงินทุนเพื่อรักษา django-rest-framework

django-rest-framework ยังมีแพ็คเกจ arty ที่ 3 จำนวนมากซึ่งจะช่วยให้คุณสร้าง API ของคุณได้ง่ายขึ้นด้วยความยุ่งยากน้อยลง

ส่วนหนึ่งของ drf นั้นจะถูกรวมใน django ด้วย

drf ให้รูปแบบและเครื่องมือที่ดีขึ้นกว่าเดิมจากนั้น django-Deliciouspie

ในระยะสั้นมันได้รับการออกแบบมาเป็นอย่างดีได้รับการดูแลเป็นอย่างดีได้รับเงินสนับสนุนจัดหาแอพของบุคคลที่สามขนาดใหญ่ได้รับความไว้วางใจจากองค์กรขนาดใหญ่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.