2012-04-05 6 views
1

私はいくつかのアプリケーションでCakePHPを使用していましたが、今ではDjangoで最初のアプリケーションを構築しています。DjangoのCakePHPデータソース

CakePHPでは、datasourceはモデルとデータソースとのリンクです。これはORMに依存するか、APIなどの外部ソースからのデータにアクセスする可能性があります。

私は外部APIで遊ぶためにDjangoでNon-ORMデータソース(デフォルトではModelsなど)を同じようにすることができます。

あなたが正しい方法で私を指すことができれば、本当に感謝します。

ありがとうございました!

答えて

0

このコンセプトは、djangoとcakeの間では一致しません。 djangoモデルでは、明示的にデータベースにマップするORMがあります。そのルールを破ったカスタムバックエンドを書くことができますが、それは苦しいようです。

しかし、djangoでmongoドキュメントを使用するなどの伝統的ではないデータベースソースを使用する例がたくさんあります。 Pythonを強く理解しているなら、APIをオブジェクトインスタンスにラップするのに必要なすべての詳細を扱う基本クラスを設計するのは比較的簡単です。しかし、それはdjangoの箱の中に存在する何かになることはありません。その機能を提供するサードパーティーのアプリがあるかもしれませんが、私は頭の上から外れているアプリを認識していません。それを自分ですることは、ケーキでやっているやり方よりはるかに複雑なことではないでしょう。ケーキの非データベースデータソースは、リクエストを作成してレスポンスを解析する必要があります。任意のAPI。

apiを呼び出してそのすべてのロジックを含むモデルスタイルクラスを構築するというすべての動作をラップすると書いてほしくない場合、djangoでこれを処理する通常の方法は、単にurllib2 (これがリモートAPIソースである場合)、リクエストの結果を解析します。

+0

ありがとうございました。実際には私は既にAPIとの通信を包むモジュールを持っています。モジュールをビューにインポートして、テンプレートに必要なデータを送信しています。 しかし、私はそれを行うためのより良い/標準的な方法があると思います。たとえば、APIに書き込む必要がある場合、フォームをどのように定義する必要がありますか? – tufla

+0

ModelFormsが提供する素敵なものはありません(APIバックエンドのロジックを再実装しない限り)。ただし、通常のフォームを使用して、ビューコード内からAPIへの書き込みを処理することもできます。また、書き込みを処理するフォームにメソッドを追加することもできます。 Formから継承するクラスを作ることもできますが、 'def write()'のようなものを実装し、initが誰かがURLを受け入れるようにします。次に 'write()'はcleaned_dataをループし、データを非常に一般的な方法で正しくポストします。 – John

関連する問題