당신은 멋쟁이, 우리는 장고쟁이~

0%

DRF-Tutorial-34편- URLs에 명시적으로 ViewSets 묶어주기

Binding ViewSets to URLs explicitly


handler 메서드들은 URL Conf 를 정의할때에만 동작들에 묶여집니다.


무슨일이 일어나는지 보기 위해, 명시적으로 ViewSets 로 부터, View 의 세트를 생성해 줍니다.


snippets/urls.py 파일안에, 우리의 ViewSet 클래스들을 묶어줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from snippets.views import SnippetViewSet, UserViewSet, api_root 
from rest_framework import renderers

snippet_list = SnippetViewSet.as_view({
'get': 'list',
'post': 'create'
})
snippet_detail = SnippetViewSet.as_view({
'get':' retrieve',
'put': 'update',
'patch': 'partial_update',
'delete': 'destroy'
})
snippet_highlight = SnippetViewSet.as_view({
'get': 'highlight'
}, renderer_classes=[renderers.StaticHTMLRenderer])

user_list = UserViewSet.as_view({
'get': 'list',
})

user_detail = UserViewSet.as_view({
'get': 'retrieve'
})

우리가 어떻게 다수의 뷰들을 각 ViewSet 클래스로부터 생성하고 있는지 알아야 합니다.


http메서드들을 각 뷰에 요구되는 엑션들을 묶어주는식으로 이 작업을 하고 있다는것을 인지하고 있어야 합니다.


이제 우리는 우리의 리소스들을 뷰들에 묶어주었습니다. 우리는 이전처럼, 뷰들을 URL Conf 와 함께 등록 해줄수 있습니다.


1
2
3
4
5
6
7
8
urlpatterns = format_suffix_patterns([
path('', api_root),
path('snippets/', snippet_list, name='snippet_list'),
path('snippets/<int:pk>/', snippet_detail, name='snippet-detail'),
path('snippets/<int:pk>/higlight', snippet_highlight, name='snippet-highlight'),
path('users/', user_list, name='user-list'),
path('users/<int:pk>/', user_detail, name='user-detail')
])