2017-01-26 5 views
-4

私はDjango Rest FrameworkとAngularを使用してアプリケーションを作成しています。フロントエンドでAngularでアクセスしたいモデル用のシリアライザとModelViewSetクラスを作成しました。カスタムAPI関数

すべての機能は現時点では問題ありませんが、基本的な操作を超えた機能をご希望です。

今はフロントエンドサービスからのみCRUDクエリを実行できます。しかし、私は、「最新のもの」やより具体的なものを作成したいと考えています。

好ましくは、バックエンドモデルを対応するAngularリソースと通信させたいと考えています。

ありがとうございます!

+0

。おかげさまで – Sayse

答えて

1

Djangoビューセットでカスタムエンドポイントを定義するだけで済みます。

class AccountViewSet(viewsets.ModelViewSet): 
    """ 
    A simple ViewSet for viewing and editing the accounts 
    associated with the user. 
    """ 
    serializer_class = AccountSerializer 
    permission_classes = [IsAccountAdminOrReadOnly] 

    @list_route(methods=['get']) 
    def get_most_recent(self): 
     <get the most recent account code here> 
     return Request(data, status=200) 

は、その後、あなたの角度のコードであなただけの適切なエンドポイントに要求... http://yoururl.com/accounts/get_most_recentのようなものを作ります。メソッド配列内で受け入れる動詞を定義することによって、任意のREST動詞(GET、POST ...)でこれを行うことができます。

ドキュメントはここにある:これは、ビューセットのためのドキュメントに多額の文書化されてhttp://www.django-rest-framework.org/api-guide/viewsets/#modelviewset

+0

list_routeとdetail_routeの違いは何ですか? – zubhav

+0

list_routeは、エンドポイントへの一般的な要求です。 detail_routeは主キーを送信し、特定のリソースにアクセスするために使用されます。 list_routeは.com/userのようになり、detail_routeは.com/user/1234(1234は特定のユーザーID番号)のようになります。そのすべてはドキュメントにあります。 また、これが役に立ったら、私の答えを受け入れてください。 – joed4no