나머지 프레임 워크 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 () 
        학사 =의 BookSerializers (book_list, 많은 = 참)
         반환 응답 (bs.data) 

    데프 (자체 요청) 게시 :
         # 添加一条数据
        인쇄 (request.data) 

        기지국 = BookSerializers의 (= 데이터 request.data)
         경우 bs.is_valid () 
            bs.save ()   # 1 生成记录
            반환 응답 (bs.data)
         다른 : 

            리턴 응답 (bs.errors을 ) 

클래스BookDetailView (APIView) :
     데프 (자동, 요청, PK) 얻을 : 
        book_obj = models.Book.objects.filter (PK = PK) 좁은 방 () 
        학사 =의 BookSerializers (book_obj, 많은 = 거짓)
         반환 응답 (bs.data)
     DEF (자가 요청, PK) 넣어 
        book_obj = models.Book.objects.filter (PK = PK) 좁은 방 () 

        BS = BookSerializers의 (= 데이터 request.data 예 = book_obj)
         경우 bs.is_valid () : 
            기지국 .save () #의 업데이트 
            반환 응답 (bs.data)
         다른 사람 :
             반환응답 (bs.errors)는
     데프 (자동, 요청, PK) 삭제 : 
        models.Book.objects.filter를 (PK = PK) .delete () 

        반환 응답 ( "" )

두 반자동 경로 (뷰 클래스 상속 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 ()
 # 두 파라미터 매칭 행은 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