基本的なビュー:
検索resfulインタフェースを変更するために出版社の追加および削除を書きます
ルート:
URL(R ' ^パブリッシュ/ $ ' 、views.PublishView.as_view())、 URL(R ' ^ /パブリッシュ(?P <PK> \ D +)/ $ '、views.PublishDetailView.as_view())、
ビュー:
クラスPublishSerializers(serializers.ModelSerializer): クラスのメタ: モデル = models.Publish フィールド = ' __all__ ' クラスPublishView(APIView): デフ(自己、リクエスト)を取得: publish_list = models.Publish.objects.all() BS = PublishSerializers( publish_list、多くの= TRUE) #序列化数据 リターン応答(bs.data) デフ投稿(自己、リクエスト): #添加一条数据 プリント(request.data) BS= PublishSerializers(データ= request.data) の場合bs.is_valid(): bs.save() #生成记录 返すレスポンス(bs.data) 他: リターン・レスポンス(bs.errors) クラスPublishDetailView(APIView): デフを取得(自己、リクエスト、PK): publish_obj = models.Publish.objects.filter(PK = PK)1次回() BS = PublishSerializers(publish_obj、多くの= False)が 戻り応答(bs.data) デフ(自己、リクエスト、PKを)置きます: publish_obj = models.Publish.objects.filter(PK = PK))(1次回 BS = PublishSerializers(データ= request.data、インスタンス= publish_obj) の場合bs.is_valid(): bs.save() #の更新 リターン応答(bs.data) 他: リターン・レスポンス(bs.errors) デフ削除(自己、要求、PK): models.Publish.objects.filter(PK = PK).delete() の戻り応答("" )
二つのミックスインクラスとライティングクラスgenericeビュー
rest_framework.mixins インポートCreateModelMixin、RetrieveModelMixin、ListModelMixin、UpdateModelMixin、DestroyModelMixinを から rest_framework.generics インポートGenericAPIView クラス:PublishView(ListModelMixin、CreateModelMixin、GenericAPIView) クエリセット = models.Publish.objects.all() serializer_class = PublishSerializers デフのget(自己、要求を): リターンself.list(リクエスト) デフ投稿(自己、リクエスト): リターンself.create(リクエスト) クラスPublishDetailView(RetrieveModelMixin、UpdateModelMixin、DestroyModelMixin、GenericAPIView): クエリセット = models.Publish.objects.all() serializer_class = PublishSerializers デフのget(自己、要求、* argsを、** kwargsから): リターン self.retrieve(要求、* argsを、 ** kwargsから) デフ入れ(自己、要求、* argsを、** kwargsから): リターン self.update(要求、* argsを、** kwargsからは) デフ(自己、要求、* argsを、**削除:kwargsから) リターン自己を.destroy(要求、* argsを、** kwargsから)
THREE使用のジェネリックListCreateAPIView、RetrieveUpdateDestroyAPIView
rest_framework.generics インポートListCreateAPIView、RetrieveUpdateDestroyAPIViewの クラス:PublishView(ListCreateAPIView) クエリセット = models.Publish.objects.all() serializer_class = PublishSerializers クラスPublishDetailView(RetrieveUpdateDestroyAPIView): クエリセット = models.Publish.objects.all() serializer_class = PublishSerializersを
IV利用ModelViewSet
ルート:
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を