0

私は大規模な既存のコードベースの API の作成を任されており、tasypie を使用することにしました。問題はアプリの構造にあります。

Djnago ORM が実行されるデータベースがあります。ただし、アプリは ORM を直接操作するのではなく、ORM オブジェクトの作成や検証などを処理する一連のメソッド (データ抽象化レイヤー) を介して動作します。

スロットリング、認証などのすべての利点を得るために、tastypie を上記のメソッドに接続したいと思いますが、その方法がわかりません。

私はtastypie用のカスタムデータソースを書き込もうとしました(ドキュメントにあるriakの例のように)が、何をオーバーライドする必要があるのか​​ 、各メソッドが何をするのかについて完全に混乱しています。

要約すると、次のようになります。

  1. Tastypie と ORM の間にデータ抽象化レイヤーを追加するにはどうすればよいですか?
  2. カスタム データ ソースの使用は正しいですか?
  3. このようなカスタム データ ソースを作成するにはどうすればよいでしょうか?

ありがとう。

4

3 に答える 3

0

私はこれをさらに調べて、Resource メソッドが何をするかを理解する最も明確な方法を見つけました。これは、Resource と ModelResource の実際の TastyPie ソース コードを見ることです: https://github.com/toastdriven/django-tastypie/blob/ master/tastypie/resources.py

これは、django の ORM を使用した場合にどのように機能するかを示しており、それを説明するまともなインライン ドキュメントがあります。

このドキュメントでも何が起こっているのかがすぐにわかるとは限りませんが、ModelResource と同じように REsource サブクラスを作成し、各メソッドにログを追加し、API を操作して、どのメソッドが呼び出され、何を行うかを確認しました。次に、ORM 以外のカスタム動作を実装するために、メソッドを段階的に変更していきます。

于 2013-09-07T07:18:36.927 に答える
0

はい、TasyPie はそれを行います。基本的に、API 呼び出しを django ORM 機能に直接接続するのは非常に簡単です。TasyPie の ModelResource のサブクラスである Django モデルに関連するクラスを使用すると、すぐにすぐに動作するように処理されます。しかし、Data Abstarction Layer とのインターフェースのような、よりカスタマイズされた何かをしたい人のために、物事をカスタマイズする方法があります。基本的に、ModelResource を使用する代わりに Resource クラスを使用し、さまざまな API 呼び出しが行われたときに Data Abstarction Layer で動作するように実装する必要がある一連のメソッドがあります。ここのドキュメントで説明されています。

http://django-tastypie.readthedocs.org/en/latest/resources.html

というセクションで説明されているカスタム リソースを実装する方法について、ドキュメントに 1 つの例が示されています。

ORM 以外のデータ ソースで Tastypie を使用する (リンクを投稿したいのですが、スタック オーバーフローにより po に制限されます

残念ながら、コードが何をしているのか正確には詳しく説明されておらず、説明は少し薄いです IMHO この例では、Riak と呼ばれる完全に非 ORM No SQL データベースへのカスタム インターフェイスを作成しています。Riak を使用している場合や、私が知らない Riak について何か知っている場合でも、これは素晴らしいことです。2 つの新しいテクノロジに関するコードを読み、そのコードが実際に何をしているのかを理解するのは、少し混乱しました。

API 呼び出しを単純な python クラスに接続する教育目的で作成されたカスタム Resource here を使用する、より簡単な例があります。

https://gist.github.com/nomadjourney/794424

私は Tastypie の専門家ではありません。実際、Tastypie を使い始めたばかりです。あなたのように、簡単にすぐに使える ModelResources を使用する代わりに、カスタム リソースを実装する必要があります。まだ成功していませんが、発見したことをお知らせしたいと思います。TastyPie のドキュメントでは、それを書いた人々がアクティブな IRC チャンネルを維持していると言及されており、そこで彼らはあなたを助けてくれます。ここで必要なものが得られない場合は、スタックオーバーフローよりもこちらの方がよいかもしれません。頑張ってください、私が最もよく機能する例が得られたら、例を投稿しようとします Doug

于 2013-09-07T01:44:39.943 に答える