回答:
私はDjangoアプリケーションを「アプリケーション」というよりも再利用可能なモジュールまたはコンポーネントと考える方を好みます。
これにより、特定の機能をカプセル化して分離し、特定の「アプリ」をコミュニティ全体と共有することを決定した場合の再利用性と保守性を向上させることができます。
私の一般的なアプローチは、特定の機能または機能セットを「アプリ」にバケット化して、それらを公開して公開するかのように扱うことです。ここで難しいのは、各バケットの大きさを把握することです。
私が使用する良いトリックは、アプリが公開された場合にどのように使用されるかを想像することです。これはしばしば私にバケツを縮小させ、その「目的」をより明確に定義することを奨励します。
これは、2008年9月6日に更新されたプレゼンテーションです。
DjangoCon 2008:再利用可能なアプリ@ 7:53
スライドから撮影
これは独自のアプリケーションである必要がありますか?
- アプリのフォーカスとはまったく関係ありませんか?
- それは私がしている他のことと直交していますか?
- 他のサイトでも同様の機能が必要ですか?
それらのいずれかが「はい」ですか?次に、それを別のアプリケーションに分割するのが最善です。
私がウェブ上で見つけたこの質問に対する2つの最良の答えは次のとおりです。
どちらのソースも、次の状況では別のアプリを作成する必要があることに同意しています。
「アプリ」は多くの異なるものになる可能性があります。たとえば、ブログを作成しているとします。アプリをブログ全体にすることも、「管理者」アプリ、すべてのパブリックビュー用の「サイト」アプリ、「rss」アプリ、「サービス」アプリを用意して、開発者がブログでインターフェイスをとることができるようにすることもできます独自の方法など
私は個人的にはブログ自体をアプリにして、その中の機能を打ち出します。その後、ブログは他のWebサイトでかなり簡単に再利用できます。
Djangoの良い点は、ディレクトリツリーの任意のレベルにあるすべてのmodels.pyファイルがDjangoモデルを含むファイルとして認識されることです。したがって、「アプリ」自体の中で機能を小さな「サブアプリ」に分割しても、何も難しくはありません。