静止フレームワークビュー

基本的なビュー:

  検索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を

 

 

おすすめ

転載: www.cnblogs.com/HUIWANG/p/11140157.html