이제 manage.py가 있는 곳에서 서버를 돌리면
python manage.py runserver
mysite.settings를 사용하니 해당 세팅을 사용하고
// manage.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
mysite/settings.py
에서 mysite/urls.py
를 ROOT_URLCONF로 사용하니 mysite/ursl.py
에 있는 urlpattern들로 처음에 매칭을 해줌.
// mysite/setting.Spy
ROOT_URLCONF = 'mysite.urls'
이제 그럼 mysite/ursl.py
을 보면 각각의 앱에 대한 url을 정의해 놨음.
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/blog/', include('blog.urls')),
path('api/v1/account/', include('account.urls')),
path('api/v1/esi/', include('esi.urls')),
]
blog/urls.py
를 보면 아래처럼 router
에 뷰셋들을 등록했고 이 라우터를 urlpatterns에 넣어서 DRF가 자동으로 해당 뷰셋들에 대한 url을 ''
을(api/v1/blog)
기준으로 자동으로 생성해줌.
router = DefaultRouter(trailing_slash=False)
router.register(r'post', views.PostViewSet2, basename='posts')
router.register(r'comment', views.CommentViewSet, basename='comments')
urlpatterns = [
# drf
path('', include(router.urls)),
]
따라서 blog/views.py
에서 list()
는 http://127.0.0.1:8000/api/v1/blog/post
로 접근 할 수 있음.
// blog/views.py
class PostViewSet2(viewsets.GenericViewSet):
# 기본 설정이 is_authenticaed여서 이거 해줘야함
queryset = Post.objects.all()
serializer_class = PostSerializer
# http GET http://127.0.0.1:8000/api/v1/blog/post
def list(self, request):