ジャンゴ-DRFコンポーネントの学習 - 学習ルート

1.ルートルータ

ビュービューセットのセットのために、我々は要求モードで指定された操作とアクションの間、手動での対応に加えことができますが、またすぐにルーティング情報を使用するルータに私たちを助けることができます。

RESTフレームワークでは、二つのルータを提供します

  • SimpleRouter

  • defaultrouterに

1.1使用

1)例えば、ルータオブジェクト登録ビューのセットを作成し、

rest_frameworkの輸入ルータ
ルータ = routers.DefaultRouter()
router.register(R ' router_stu '、StudentModelViewSet、BASE_NAME = ' 学生'

登録(接頭辞、ビューセット、BASE_NAME)

  • プレフィックスプレフィックスビューセット

  • ビューのビューセットのセット

  • BASE_NAMEルーティングプレフィックスの別名

次のように上記ルーティング・コードが形成されています。

^ブック/ $名:book- リスト
 ^ブック/ {PK} / $名:ブック詳細

2)ルーティングデータを追加

2つの方法があります。

urlpatterns = [ 
    ... 
] 
urlpatterns + = router.urls 

urlpatterns = [ 
    ... 
    URL(R ' ^ ' 、含める(router.urls))
]

生成されたルーティングアドレスを表示するために使用されるルーティングセット

 
 
rest_framework.viewsets インポートModelViewSet、ReadOnlyModelViewSetの
 クラス:StudentModelViewSet(ModelViewSet)
    クエリセット = Student.objects.all()
    serializer_class = StudentModelSerializer 
    デフログイン(自己、リクエスト):
         "" " 学生登录功能""" 
        印刷(self.actionを)
         リターン応答({ " メッセージ"" 登录成功" })

宛先コード:

 
 
django.urls インポートパス、re_path
 から輸入は
urlpatternsは = [ 
    ... 
] 
「」「使用DRFは、ルーティングリストビューセットを生成するために、ルータのルーティング提供」「」
#は、ルーティングインスタンス化
#のDRFを提供するために2つの合計を提供しましたルーティングクラスは、私たちの使用のために、その使用法との整合性は、ほぼ同じ機能
から rest_framework.routers インポートdefaultrouterに
ルータ = defaultrouterに() 
登録ビューセット
#1 router.register(「ルーティングプレフィックス」、設定されたカテゴリビュー) 
router.register(router_stu " 、views.StudentModelViewSet) 
urlpatterns用に生成されたルーティングテーブルを追加
印刷(router.urls)
urlpatterns + = router.urls
上記のコードが正常のルーティングアドレス生成[追加/削除/変更/検索機能の/複数のチェック]、我々は自動的にビューのルート設定方法をカスタマイズしていません。

我々は独自のルーティング方法を生成する必要があれば、あなたは、アクションのアクションを宣言する必要があります。

1.2集中管理ビューの追加アクション文

あなたは私たちがルーターが自動的にカスタムアクションのためのルーティング情報を生成させる手助けをしたい場合は、焦点の観点では、あなたが使用する必要がrest_framework.decorators.actionデコレータを。

アクションデコレータで装飾メソッド名は相当を取得し、リスト、アクションとして、アクションの名前になります。

装飾的なアクションは、2つのパラメータを受け取ることがあります。

  • 方法:、転送のリストをリクエストメソッドに対応するアクションを宣言

  • ディテール

    :パスは、単一のリソースに対応するかどうかアクションを宣言し、それがあるかどうか

    XXX / <PK> /アクションメソッド名/
    • Trueの場合、パスのフォーマットは表しxxx/<pk>/action方法名/

    • これは、パス形式がFalseを表しxxx/action方法名/

例えば:

rest_framework.viewsets インポートModelViewSet
 から rest_framework.decorators インポートアクション
クラスStudentModelViewSet(ModelViewSet):
    クエリセット = Student.objects.all()
    serializer_class = StudentModelSerializer 
    方法HTTPリクエストには、現在のビューのメソッドにアクセスすることができ、現在の方法で提供
    #の詳細現在のビューを操作がデータであるか否かを
    #の詳細がTrueで、パス名の形式はrouter_stuことを示している/} {PK /ログイン/ 
    @Action(メソッド= [ ' GET ' ]、詳細= TRUE)
     DEF ログイン(セルフ、要求、PK):
         「」 " ログ"" " 
        ... 
    Falseに詳細は、パス名の形式は、router_stu / get_new_5 /されるべきであることを示す 
    @Action(方法= [ ' PUT ' ]、ディテール= False)が
     DEFのget_new_5(セルフ、要求):
         " "" 最新のアドオンを入手するために5つの学生情報「」 " 
        ...

自動アクションのカスタマイズされたセットを形成するこの方法のためにルータノードビューによって以下のようになります。

^ router_stu / get_new_5 / $名:router_stu- get_new_5
 ^ router_stu / {PK} /ログイン/ $名:router_stuログイン

道の1.3 URLルーティングルータの形成

1)SimpleRouter

SimpleRouter

2)defaultrouterに

defaultrouterに

defaultrouterをとSimpleRouter違いはdefaultrouterには、より多くのすべてのビューのリストが含まれているハイパーリンクに応答して、APIが返すデータのデフォルトのルートビューに付属しているだろう、です。

OK

おすすめ

転載: www.cnblogs.com/gbq-dog/p/10990865.html