カスタムルート(元のメソッド):
django.conf.urls インポートURLを から app01 インポートビュー urlpatterns = [ URL(R ' ^ブック/ $ ' 、views.BookView.as_view())、 URL(R " ^冊/(?P <PK> \ D +) $ " 、views.BookDetailView.as_view())、 ]
クラスBookView(APIView): デフを取得(自己、リクエスト): book_list = models.Book.objects.all() のBS =のBookSerializers(book_list、多くの= 真) の戻り応答(bs.data) デフ(自己、リクエスト)投稿: #添加一条数据 プリント(request.data) BS = BookSerializers(データ= request.data) の場合bs.is_valid(): bs.save() #生成记录 返すレスポンス(bs.dataを) 他: 返す(レスポンスbs.errors ) クラスBookDetailView(APIView): デフ(自己、リクエスト、PK)を取得: book_obj = models.Book.objects.filter(PK = PK)1次回() BS =のBookSerializers(book_obj、多くの= False)が 戻り応答(bs.data) DEF :(自己、リクエスト、PK)置く book_obj = models.Book.objects.filter(PK = PK)1次回() BS =のBookSerializers(データ= request.data、インスタンス= book_obj) 場合bs.is_valid(): BSを.SAVE() #の更新 リターン応答(bs.data) 他: リターンレスポンス(bs.errors)は デフ(自己、リクエスト、PK)を削除: models.Book.objects.filter(PK = PK).delete() の戻り応答を("" )
2つの半自動ルート(図クラス継承ModelViewSet)
django.conf.urls インポートURLを から app01 インポートビュー urlpatterns = [ URL(R ' ^パブリッシュ/ $ '、views.PublishView.as_view({ ' 得る':' リスト'、' ポスト':' 作成' )}) 、 URL(rは' ?^)/(P <PK> \ D + / $を公開'、views.PublishView.as_view({ ' 得る':' 検索'、"プット':' 更新' ' 削除':' 破壊' })) ]
rest_framework.viewsets インポートModelViewSetの クラス:PublishView(ModelViewSet) クエリセット = models.Publish.objects.all() serializer_class = PublishSerializersを
三つの自動配線(自動的に生成されたルーティング)
django.conf.urls インポートURLが含ま から app01 インポートビュー から rest_framework インポートルータの ルータ = routers.DefaultRouter() #2つのパラメータの整合経路は、CBVの中に記述されたクラスを示す図である router.register(' 公開'views.PublishView) urlpatterns = [ #レンダリングされたページを返すhttp://127.0.0.1:8000/publish/format=json(これはレンダラによって決定される)#のURL(R&LT' ^ /」を公開、ビュー。 PublishView.as_view({ 'GET': '一覧'、 'POSTを': '作成'}))、 #http://127.0.0.1:8000/publish.json(これは、レンダラによって決定されるレンダリングされたページを返します)# URL(R&LT、views.PublishView.as_viewは({ 'GET': 'リスト'、 'POSTを': '作成'} '^ \(P <フォーマット> \ W +は)$発行します。?'))、 #は以下を使用することができますアクセス #1 http://127.0.0.1:8000/publish/ #2 http://127.0.0.1:8000/publish.json #3 http://127.0.0.1:8000/publish/3 #4 HTTP: //127.0.0.1:8000/publish/3.jsonの URL(R&LT '' 、が挙げられる(router.urls)) ]
rest_framework.viewsets インポートModelViewSetの クラス:PublishView(ModelViewSet) クエリセット = models.Publish.objects.all() serializer_class = PublishSerializersを