it-swarm-id.com

Kapan membuat aplikasi baru (dengan startapp) di Django?

Saya sudah mencari-cari di Google untuk hal ini, tetapi saya masih mengalami kesulitan terkait dengan apa yang didefinisikan Django sebagai "aplikasi". 

Haruskah saya membuat aplikasi baru untuk setiap bagian dari fungsionalitas di situs, meskipun menggunakan model dari proyek utama? 

Apakah kalian punya aturan yang baik tentang kapan harus memisahkan aplikasi baru, dan kapan harus menjaga fungsionalitas bersama dengan "proyek utama" atau aplikasi lain?

79
Håkan

James Bennett memiliki set slide yang indah tentang cara mengatur aplikasi yang dapat digunakan kembali di Django.

39
Antti Rasinen

Saya lebih suka menganggap aplikasi Django sebagai modul atau komponen yang dapat digunakan kembali daripada sebagai "aplikasi". 

Ini membantu saya merangkum dan memisahkan fitur-fitur tertentu dari satu sama lain, meningkatkan kegunaan kembali jika saya memutuskan untuk berbagi "aplikasi" tertentu dengan masyarakat luas, dan pemeliharaan.

Pendekatan umum saya adalah mengaitkan fitur atau set fitur tertentu ke dalam "aplikasi" seolah-olah saya akan merilisnya secara publik. Bagian yang sulit di sini adalah mencari tahu seberapa besar masing-masing ember. 

Trik yang baik saya gunakan adalah membayangkan bagaimana aplikasi saya akan digunakan jika mereka dirilis secara publik. Ini sering mendorong saya untuk mengecilkan ember dan lebih jelas mendefinisikan "tujuannya".

18
blahspam

Saya cenderung membuat aplikasi baru untuk setiap set model yang terpisah secara logis. misalnya.:

  • Profil pengguna
  • Kiriman Forum
  • Posting blog
11
pobk

Berikut ini adalah presentasi terbaru pada 6 September 2008.

DjangoCon 2008: Aplikasi Reusable @ 7: 53

Slide: Reusable_apps.pdf

Diambil dari slide

Haruskah ini menjadi aplikasinya sendiri?

  • Apakah itu sama sekali tidak terkait dengan fokus aplikasi?
  • Apakah itu ortogonal terhadap apa pun yang sedang saya lakukan?
  • Apakah saya memerlukan fungsionalitas serupa di situs lain?

Jika ada di antara mereka yang "Ya"? Maka yang terbaik untuk memecahnya menjadi aplikasi terpisah.

11
Yeo

Aturan yang saya ikuti adalah aplikasi baru jika saya ingin menggunakan kembali fungsionalitas dalam proyek yang berbeda.

Jika perlu pemahaman yang mendalam tentang model dalam proyek Anda, mungkin lebih kohesif untuk tetap menggunakan model tersebut.

5
Ryan

'Aplikasi' dapat berupa banyak hal berbeda, semuanya benar-benar sesuai selera. Misalnya, katakanlah Anda sedang membangun blog. Aplikasi Anda dapat berupa keseluruhan blog, atau Anda dapat memiliki aplikasi 'admin', aplikasi 'situs' untuk semua tampilan publik, aplikasi 'rss', aplikasi 'layanan' sehingga pengembang dapat berinteraksi dengan blog di blog mereka. cara sendiri, dll.

Saya pribadi akan membuat blog itu sendiri aplikasi, dan membagi fungsionalitas di dalamnya. Blog kemudian dapat digunakan kembali dengan lebih mudah di situs web lain.

Yang menyenangkan tentang Django adalah bahwa ia akan mengenali file models.py di dalam setiap tingkatan pohon direktori Anda sebagai file yang berisi model Django. Jadi memecah fungsionalitas Anda menjadi 'sub-aplikasi' yang lebih kecil di dalam 'aplikasi' itu sendiri tidak akan membuat sesuatu menjadi lebih sulit.

1
willurd

Dua jawaban terbaik untuk pertanyaan ini yang saya temukan di web adalah:

  1. Bicara Aplikasi Reusable ( slide ) ( video ) juga disebutkan dalam jawaban lain. Bennett, penulis dan kontributor Django, secara teratur menerbitkan aplikasi untuk digunakan orang lain dan memiliki sudut pandang yang kuat terhadap banyak aplikasi kecil.
  2. Tips Doordash untuk Django di Skala yang memberikan saran yang berlawanan dan mengatakan dalam kasus mereka, mereka bermigrasi ke satu aplikasi tunggal setelah memulai dengan banyak aplikasi terpisah. Mereka mengalami masalah dengan grafik ketergantungan migrasi antara aplikasi.

Kedua sumber sepakat bahwa Anda harus membuat aplikasi terpisah dalam situasi berikut:

  • Jika Anda berencana untuk menggunakan kembali aplikasi Anda di proyek Django lain (terutama jika Anda berencana untuk menerbitkannya untuk orang lain untuk digunakan kembali).
  • Jika aplikasi memiliki sedikit atau tidak ada ketergantungan antara itu dan aplikasi lain. Di sini Anda mungkin bisa membayangkan aplikasi berjalan sebagai layanan microsoft sendiri di masa depan.
1
Jonathan Berger