私はこのアプリ全体のアイデアに本当に苦労しています。私はたくさんのチュートリアルとスタイルガイドを読みました、そして私は特別なアプリを作成しようとするべきだと知っています、それはまさに一つのことをします。単純なチュートリアルプロジェクトを見ると、これはすべて理にかなっていますが、複雑な実際のプロジェクトに到達するとすぐに、異なるアプリ間でどのように線を引くべきかを判断できなくなります。
問題の1つは、ユーザーがさまざまなものをたくさん目にする1つのサイト(または複数のサイト)が欲しいということです。アプリのデザインルールに従うときに、さまざまなアプリからのものである必要があるもの。このようなことをどのように実現しますか?私の最初のアイデアは、実際にテンプレートにつながるすべてのビューを処理するui
という1つのアプリを作成することでした。他のすべてのアプリはモデルとヘルパー関数を提供します。しかし、ui
アプリが大きくなることを恐れています。
簡単な例を挙げましょう。ユーザーが次のタスクを実行できるサイトを用意しましょう。
今、私は3つのアプリを作成します:
しかし、これらのアプリの相互作用を処理し、すべてのアプリが何らかの形で関与する実際のサイトを作成するには、何らかのmain
またはui
アプリが必要です。
それで、これを行う「正しい」方法はありますか?または、使用できるパターンはありますか?私はすでにかなりの数を読んでいますが、このトピックに関する優れたリソースへのリンクにも感謝します。
your構造がyouにとって意味があることを確認する必要があります。
プロジェクトのロジックの別の部分にバインドされているすべての機能に対して新しいアプリを作成する必要はありません。
再利用可能なアプリはまったく別の話であり、それらのコードはある程度実装を認識していないはずです。
インスピレーションを得るために Djangoの構造 を見てください
あなたの例の可能なレイアウト:
project_root/
project/
__init__.py
settings.py
urls.py
templates/
app1/ # override stuff
static/
media/
app1/
__init__.py
admin/ # as a package
__init__.py
subjects.py
resources.py
# etc
models/ # as a package
subjects.py
resources.py
# etc
managers/
__init__.py
subjects.py
resources.py
# etc
services/
__init__.py
audio.py # upload handler etc
views/
__init__.py
subjects.py
urls/
__init__.py
subjects.py
templates/
app1/
subject_list.html # override at project level
static/
app1/
css/
subject.css # override at project level
app2/
__init__.py
models.py # holds a Member model or whatever you require
manage.py
アプリを区切る最善の方法は、オブジェクト指向プログラミング言語でクラスを区切る方法とほぼ同じだと思います。変数とメソッドの代わりに、それぞれモデルとビューを考えます。
モデルはオブジェクトの状態であり、ビューはオブジェクトの状態を確認して操作するために使用されます。
私の経験則は、アプリの作成は encapsulate モデルの特定のセットに役立ちますか?その場合は、作成を試みます。