このシーンはかなり新しく、ベストプラクティスを採用するためのドキュメントを見つけようとしています。さまざまなメディアカタログで構成されるかなり大規模なコンテンツサイトを構築しており、これまでにないフレームワークを使用して使用する必要があるアプローチをよりよく理解できるように、比較可能なデータ/アーキテクチャモデルを見つけようとしています。以前に利用しました。任意の洞察/助けをいただければ幸いです!
3 に答える
「これまで利用したことのないフレームワークを使用して、使用すべきアプローチをよりよく理解できるようにするためのデータ/アーキテクチャモデル」
Djangoはあなたにベストプラクティスを課します。あなたには多くの選択肢がなく、多くの間違いを犯すことはできません。
MVC(高貴な願望の間)は次のように実装されます:
- データは、DjangoORMモデルを使用して「models.py」ファイルで定義されます。
- urls.pyファイルはURLを表示機能にマップします。賢くあなたのURLを選んでください。
- ビュー関数は、モデルとモデル内のメソッドを利用して、すべての処理を実行します
- View関数によって呼び出されるプレゼンテーション(HTMLテンプレートを介して)。基本的に、プレゼンテーションで処理を行うことはできません。軽量の反復と意思決定だけです。
モデルはあなたのために定義されています。Djangoが自然に行うことに固執するだけで、幸せになります。
アーキテクチャ的には、通常、このようなスタックがあります。
Apacheは2つのことを行います。
- 静的コンテンツを直接かつ即座に提供
- 動的URLをDjangoに渡します(mod_python、mod_wsgi、またはmod_fastcgiを介して)。Djangoアプリは、URLをマップして関数((ORM /モデルを介して)データベースにアクセスし、テンプレートを介して表示する)を表示します。
Djangoビュー関数で使用されるデータベース。
アーキテクチャは明確に定義されています。Djangoが自然に行うことに固執するだけで、幸せになります。
Djangoのドキュメントをお読みください。それは素晴らしいです。おそらく最高です。
まず、MVCのマントラをすべて忘れてください。優れた階層構造を持つことが重要ですが、MVC(最初に定義された)は1つではなく、各GUIモジュールがこれらのツリーサブモジュールに分割されたモジュラー構造でした。ここでウェブ上で使用するものは何もありません。
Web開発では、階層化された構造を持つことが非常に重要です。最も重要な層は、モデル層と呼ばれるようになったストレージ/モデリング層です。その上、他のいくつかのレイヤーが必要ですが、それらは実際にはGUIの世界のビューやコントローラーのようなものではありません。
Djangoレイヤーは大まかに次のとおりです。
- ストレージ/モデリング:models.py、明らかに。そこに「実用的な」概念のほとんどを入れてみてください。すべての関係、すべての操作はここで実装する必要があります。
- ディスパッチ:主にurls.pyにあります。ここでは、URLスキームをコードパスに変換します。大きなswitch()ステートメントのように考えてください。ユーザーの意図に対応する読み取り可能なURLを作成するように努めてください。新しい機能を追加したり、同じことを行うための新しい方法(後でAJAX UIなど)を追加したりするのに大いに役立ちます。
- 収集:主にビュー関数、あなたと事前に構築された汎用ビューの両方。ここでは、ユーザーの要求を満たすために、モデルからすべてを収集するだけです。驚くほど多くの場合、単一のモデルインスタンスを選択するだけで、他のすべてはリレーションシップから取得できます。これらのURLの場合、一般的なビューで十分です。
- プレゼンテーション:テンプレート。ビューが必要なデータを提供する場合、それをWebページに変換するのに十分簡単です。ここで、モデルクラスに、特定のインスタンスからあらゆる種類の関連データを取得するための優れたアクセサーがあることに感謝します。
djangoの基礎とMVCのdjangoのテイクを理解するには、以下を参照してください: http ://www.djangobook.com/
手を汚すための出発点として...「...いくつかの比較可能なデータ/アーキテクチャモデルを見つけようとしています」
これは、データベースをリバースエンジニアリングしてmodels.pyファイルを取得するための迅速で汚い方法です。このファイルを調べて、djangoがそれをどのように処理するかを確認できます。
1.)ターゲットに厳密に一致するER図を取得します。たとえば、次のようなものです http://www.databaseanswers.org/data_models/product_catalogs/index.htm
2.)er図からSQLスクリプトを作成し、データベースを作成します。一部のMySQLテーブルタイプには外部キー制約がないため、Postgreをお勧めしますが、ピンチではMySQLまたはSQLITEで可能です。
3.)そのデータベースを使用するようにdjangoアプリを作成して構成します。次に、次を実行します:python manage.py inspectdb
これにより、少なくとも、djangoがどのようにモデル化を試みるかを確認するために読み取ることができるmodels.pyファイルが得られます。
inspectコマンドは、djangoで開発するときにレガシーデータベースを処理するためのショートカットであることが意図されているため、完全ではないことに注意してください。これを試す前に、必ず以下をお読みください:http: //docs.djangoproject.com/en/dev/ref/django-admin/#ref-django-admin