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