84

Django を使用して最初の実際の Web サイトを作成していますが、プロジェクトとアプリの違いを理解するのにまだ苦労しています。

たとえば、私のウェブサイトはスポーツ ニュースのウェブサイトで、記事、ランキング表、「フィクスチャと結果」などのセクションが含まれています。私の質問は、これらのセクションのそれぞれを、プロジェクト全体内の個別のアプリに配置する必要があるかどうかです。この状況でのベストプラクティスは何ですか?

4

4 に答える 4

118

プロジェクトは、アプリケーション全体とそのすべての部分を指します。

アプリは、プロジェクトのサブモジュールを参照します。それは自給自足であり、プロジェクト内の他のアプリと絡み合っていないため、理論的には、それを手に取って、変更せずに別のプロジェクトに入れることができます. 通常、アプリには独自のmodels.pyがあります (実際には空の場合があります)。スタンドアロンの Python モジュールと考えることができます。単純なプロジェクトには、アプリが 1 つしかない場合があります。

あなたの例では、プロジェクトはウェブサイト全体です。記事用のアプリ、ランキング表用のアプリ、試合結果と結果用のアプリがあるように構成することもできます。相互にやり取りする必要がある場合は、十分に文書化されたパブリック クラスとアクセサー メソッドを介して行います。

心に留めておくべき主なことは、アプリ間のこのレベルの相互依存性です。実際には、すべて 1 つのプロジェクトであるため、行き過ぎても意味がありませんが、2 つのアプリがいかに相互に依存しているかに注意してください。1 つのアプリで 2 つの問題を解決できる場合は、それらを 2 つのアプリに分割します。2 つのアプリが非常に絡み合っていて、一方がなければもう一方を再利用できない場合は、それらを 1 つのアプリに結合します。

于 2013-10-13T22:29:01.560 に答える
18

理想的には、プロジェクトは apps で構成される必要があります。そのため、コマンド ラインを使用してプロジェクトを作成し、後でそのプロジェクトにアプリを追加します。

アプリは、プロジェクトにモジュール性をもたらすことを目的としています。たとえば、 を作成した場合articles app理想的settingsには、スポーツ ニュース プロジェクトで使用し、それを必要とする新しいプロジェクト(ブログ プロジェクトなど)で最小限の変更または変更なしで再利用できます。

アプリは、再利用を目的としたソフトウェアです。あなたのプロジェクトは、あなたの特定のニーズにのみ対応しています。

Django Project Structureを見てください。Django プロジェクトを整理するためのベスト プラクティスについての洞察が得られるかもしれません。

このトピックに対処する、Google で検索可能ないくつかのブログ投稿もあります。

于 2013-10-13T22:21:04.097 に答える