静止フレームワークのURLコントロール

カスタムルート(元のメソッド):

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を

 

おすすめ

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