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') ])
|