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?
James Bennett memiliki set slide yang indah tentang cara mengatur aplikasi yang dapat digunakan kembali di Django.
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".
Saya cenderung membuat aplikasi baru untuk setiap set model yang terpisah secara logis. misalnya.:
Berikut ini adalah presentasi terbaru pada 6 September 2008.
DjangoCon 2008: Aplikasi Reusable @ 7: 53
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.
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.
'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.
Dua jawaban terbaik untuk pertanyaan ini yang saya temukan di web adalah:
Kedua sumber sepakat bahwa Anda harus membuat aplikasi terpisah dalam situasi berikut: