大規模なDjangoのプロジェクトを組織にガイド[閉じました]
質問
誰でも整理し、大規模なDjangoプロジェクトを分割する方法でのヒント/ガイドラインに良いガイド/チュートリアル/記事をお勧めだろうか?
私はあなたが最初のユニークなファイル(models.py、urls.py、views.py)を因数分解し、実体以上の数十で作業を開始する必要があるときに何をすべきかでアドバイスを探しています。
解決
それぞれの「アプリケーション」は小さくあるべきである - 単一の再利用可能なエンティティといくつかの関連するテーブル。私たちは、アプリケーションモデルごとに約5プラス/マイナス2のテーブルを持っています。私たちの半ダースのアプリケーションのほとんどは、5つの表よりも小さいです。一つは、モデル内のゼロのテーブルを持っています。
各アプリケーションは、1つの再利用可能な概念になるように設計されなければなりません。我々の場合には、各アプリケーションは、サイト全体の一部です。アプリケーションは削除され、個別に交換することができます。
実際のところ、それが当社の戦略です。私たちの要求が拡大し、成熟したように、私たちは互いに独立したアプリケーションを削除し、交換することができます。
これは、アプリケーションがお互いに依存していても大丈夫です。しかし、依存性は「モデル」と「フォーム」のような明白なものに限定する必要があります。また、アプリケーションは、互いのURLの中の名前に依存することができます。その結果、あなたの名前のURLのはreverse
機能や{% url %}
タグが適切にそれらを見つけることができるように、「アプリケーション・ビュー」のような形を持っている必要があります。
各アプリケーションは、通常django-admin
スクリプトで見つけることができる正式なコマンドを経由して(それ自身のバッチコマンドが含まれている必要があります。
最後に、単純なモデルよりも複雑ですかそれはおそらくどちらかのアプリケーションに属していない共有のフォームが、別の共有ライブラリにする必要があるもの。たとえば、私たちは XLRD に使用しますが、それはより多くですので、私たち自身のクラスで、それの一部を包みますビルトインcsv
モジュールなどがあります。それはDjangoアプリケーションの外に、別のモジュールだとXLRDのためのこのラッパーは、いずれかのアプリケーションの適切な一部ではありません。
他のヒント
私は大規模なオープンソースDjangoのプロジェクトを見て、そのプロジェクトがそれをしない方法をメモを取るために有用であることがわかってきました。 Djangoのサイトでは、オープンソースプロジェクトの良いリストを持っています:
http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects >
Googleは(これらのほとんどは小さいものの、アドインんテンプレートタグやミドルウェアとしてます:
http://code.google.com/hosting/search?q=ラベル:ジャンゴする
もちろん、一つのプロジェクトはそれをしないという理由だけで一つの方法は、その方法は、右ウェイ(または間違った方法)であることを意味するものではありません。これらのプロジェクトのいくつかは他よりも成功している。
は終わりでは、実際に動作すると動作しないものを学ぶための唯一の方法は、自分でそれを試してみることです。あなたはそれを自分で試していない限り、世界のすべてのヒントやヒントが文句を言わない助けるが、彼らはあなたが正しい方向に始めるのに役立つことがあります。