Eu pesquisei isso no Google, mas ainda tenho problemas em relacionar o que o Django define como "aplicativos".
Devo criar um novo aplicativo para cada funcionalidade em um site, mesmo que use modelos do projeto principal?
Vocês têm um bom princípio básico de quando separar um novo aplicativo e quando manter a funcionalidade junto com o "projeto principal" ou outros aplicativos?
Eu prefiro pensar nos aplicativos Django como módulos ou componentes reutilizáveis do que como "aplicativos".
Isso me ajuda a encapsular e desacoplar certos recursos uns dos outros, melhorando a capacidade de reutilização caso decida compartilhar um determinado "aplicativo" com a comunidade em geral e a facilidade de manutenção.
Minha abordagem geral é agrupar recursos específicos ou conjuntos de recursos em "aplicativos", como se eu fosse lançá-los publicamente. A parte difícil aqui é descobrir o tamanho de cada balde.
Um bom truque que uso é imaginar como meus aplicativos seriam usados se fossem lançados publicamente. Isso geralmente me incentiva a reduzir os baldes e definir com mais clareza seu "propósito".
fonte
Aqui está a apresentação atualizada em 6 de setembro de 2008.
DjangoCon 2008: Aplicativos Reutilizáveis @ 7: 53
Slide: Reusable_apps.pdf
fonte
Eu tendo a criar novos aplicativos para cada conjunto de modelos logicamente separado. por exemplo:
fonte
A regra que sigo é que deve ser um novo aplicativo se eu quiser reutilizar a funcionalidade em um projeto diferente.
Se for necessário um entendimento profundo dos modelos em seu projeto, provavelmente é mais coeso mantê-lo com os modelos.
fonte
As duas melhores respostas para essa pergunta que encontrei na web são:
Ambas as fontes concordam que você deve criar um aplicativo separado nas seguintes situações:
fonte
Um 'aplicativo' pode ser muitas coisas diferentes, tudo realmente se resume a gosto. Por exemplo, digamos que você esteja construindo um blog. Seu aplicativo pode ser o blog inteiro ou você pode ter um aplicativo 'admin', um aplicativo 'site' para todas as visualizações públicas, um aplicativo 'rss', um aplicativo de 'serviços' para que os desenvolvedores possam interagir com o blog em seus próprios caminhos, etc.
Eu, pessoalmente, faria do próprio blog o aplicativo e revelaria a funcionalidade dentro dele. O blog pode então ser reutilizado facilmente em outros sites.
O bom do Django é que ele reconhecerá qualquer arquivo models.py em qualquer nível de sua árvore de diretórios como um arquivo contendo modelos Django. Portanto, dividir sua funcionalidade em 'subaplicativos' menores dentro de um 'aplicativo' em si não tornará nada mais difícil.
fonte