Saya telah mencari-cari di Google untuk ini, tetapi saya masih menemui masalah yang berkaitan dengan apa yang Django definisikan sebagai "aplikasi".
Haruskah saya membuat aplikasi baru untuk setiap bagian fungsionalitas di situs, meskipun situs tersebut menggunakan model dari proyek utama?
Apakah kalian memiliki aturan praktis yang baik tentang kapan harus memisahkan aplikasi baru, dan kapan harus tetap menggunakan fungsionalitas dengan "proyek utama" atau aplikasi lain?
Saya lebih suka memikirkan aplikasi Django sebagai modul atau komponen yang dapat digunakan kembali daripada sebagai "aplikasi".
Ini membantu saya merangkum dan memisahkan fitur tertentu dari satu sama lain, meningkatkan kegunaan kembali jika saya memutuskan untuk membagikan "aplikasi" tertentu dengan komunitas pada umumnya, dan pemeliharaan.
Pendekatan umum saya adalah memasukkan fitur atau kumpulan fitur tertentu ke dalam "aplikasi" seolah-olah saya akan merilisnya secara publik. Bagian yang sulit di sini adalah mencari tahu seberapa besar setiap ember.
Trik bagus yang saya gunakan adalah membayangkan bagaimana aplikasi saya akan digunakan jika dirilis secara publik. Ini sering mendorong saya untuk mengecilkan ember dan lebih jelas mendefinisikan "tujuan" nya.
sumber
Berikut adalah presentasi yang diperbarui pada 6 September 2008.
DjangoCon 2008: Aplikasi yang Dapat Digunakan Kembali @ 7: 53
Slide: Reusable_apps.pdf
sumber
Saya cenderung membuat aplikasi baru untuk setiap rangkaian model yang terpisah secara logis. misalnya:
sumber
Aturan yang saya ikuti adalah itu harus menjadi aplikasi baru jika saya ingin menggunakan kembali fungsionalitas dalam proyek yang berbeda.
Jika memerlukan pemahaman yang mendalam tentang model dalam proyek Anda, mungkin lebih kohesif untuk tetap menggunakan model.
sumber
Dua jawaban terbaik untuk pertanyaan ini yang saya temukan di seluruh web adalah:
Kedua sumber setuju bahwa Anda harus membuat aplikasi terpisah dalam situasi berikut:
sumber
Sebuah 'aplikasi' bisa menjadi banyak hal yang berbeda, semuanya tergantung selera. Misalnya, 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 caranya sendiri, dll.
Saya pribadi akan menjadikan blog itu sendiri sebagai aplikasi, dan memecah fungsionalitas di dalamnya. Blog tersebut kemudian dapat digunakan kembali dengan lebih mudah di situs web lain.
Hal yang menyenangkan tentang Django adalah ia akan mengenali berkas models.py di dalam tingkat manapun dari pohon direktori Anda sebagai berkas yang berisi model Django. Jadi, memecah fungsionalitas Anda menjadi 'sub-aplikasi' yang lebih kecil di dalam 'aplikasi' itu sendiri tidak akan mempersulit apa pun.
sumber