残りのフレームワークをルーティング

ルーティング

図1に示すように、書かれた第1のルーティング - オリジナル方法

このように、フロントにある書き込まれています。


urls.py

django.conf.urlsのインポートURL
 から app01 インポートビュー

urlpatterns = [ 
    URL(R ' ^ブック/ $ ' 、views.BookView.as_view())、
    URL(R " ^冊/(?P <PK> \ D +) $ " 、views.BookDetailView.as_view())、
]


views.py

クラス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):
     DEF :(自己、リクエスト、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に示すように、第2の経路の文言-半自動モード(図クラス継承ModelViewSet

settings.py登録 'rest_framework'


serializer.py

rest_framework.serializers インポートModelSerializerを
 から app01 輸入モデル

クラス:PublishSerializers(ModelSerializer)
     クラスのMeta:
        モデル = models.Publish 
        フィールド = " __all__ "


models.py

django.db 輸入モデル

ここにあなたのモデルを作成します。
クラスは、公開(models.Model):
    名前 = models.CharField(MAX_LENGTH = 32 
    都市 = models.CharField(MAX_LENGTH = 64)


makemigrations
移行
画像


views.py

django.shortcuts インポートレンダリング
 から app01 輸入モデル
 から app01 輸入シリアライザ
 から rest_framework.viewsの輸入  APIView
 から rest_framework.responseの輸入  レスポンス
 から rest_framework.viewsets インポートModelViewSet 


路由的第二种写法:
クラスPublishView(ModelViewSet):
    クエリセット = モデル。 Publish.objects.all()
    serializer_class = serializer.PublishSerializers


urls.py

django.conf.urls インポートURL
 から django.contribの輸入管理を
 から app01 インポートビュー

urlpatterns = [ 
    URL(R ' ^管理/ ' 、admin.site.urls)、
    URL(R ' / $パブリッシュ^ '、views.PublishViewを.as_view({ ' 得る'' リスト'' ポスト'' 作成' }))、
    URLを(R ' ^(パブリッシュ/ P <PK> \ D +?)$ '、views.PublishView.as_view({ ' 得る'' 検索'' 削除'' 破壊する'' PUT '' 更新' }))、
]


テスト:

画像


図3に示すように、第3の経路書き込ま - 自動生成

views.py

django.shortcuts インポートレンダリング
 から app01 輸入モデル
 から app01 輸入シリアライザ
 から rest_framework.viewsの輸入  APIView
 から rest_framework.responseの輸入  レスポンス
 から rest_framework.viewsets インポートModelViewSet 

必须继承ModelViewSet才可以用这种方式的路由
クラスPublishView(ModelViewSet):
    クエリセット = models.Publish.objects.all()
    serializer_class = serializer.PublishSerializers


urls.py

django.conf.urls インポートURLが含ま
 から django.contrib インポートADMIN
 から app01 インポートビュー

から rest_framework.routers インポートSimpleRouter、defaultrouterに

defaultrouterに自動的に4方路を生成するステップと、SimpleRouter自動的に生成された二つの経路ルータSimpleRouter =() 
ルータ= defaultrouterに() 

登録、パスが公開 
router.register(' 公開' 、views.PublishView)

urlpatterns = [ 
    URL(R&LT ' ^ ADMIN / ' 、admin.site.urls)
    URL(R '^ / $公開'、views.PublishView.as_view({ '取得': 'リスト'、 'ポスト': '作成'}))、 
    ?URL(R '^は(P <PK /パブリッシュ> \ D +)$」、views.PublishView.as_view({ '取得': '検索'、 '削除': '破棄'、 'PUT': '更新'}))、 
    URL(rは'' は、(ルータ.urls))
]

おすすめ

転載: www.cnblogs.com/weiyiming007/p/12521643.html