Skip to content

Latest commit

ย 

History

History
86 lines (59 loc) ยท 2 KB

File metadata and controls

86 lines (59 loc) ยท 2 KB

3์ฃผ์ฐจ - 6. Router

๊ธฐ์กด์˜ URL ์„ค์ • ๋ฐฉ์‹

์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์„ค์ •ํ–ˆ๋˜ URL์ด ์–ด๋–ป๊ฒŒ Router๊นŒ์ง€
๋ฐœ์ „ํ•ด์„œ ์‚ฌ์šฉ๋˜์–ด ์™”๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

urlpatterns = [
    path(...)
    ...
]

ViewSet ๋ณต์Šต

ReadOnlyModelViewSet

  • retrieve()์™€ list()์˜ ๊ธฐ๋Šฅ

ModelViewSet

  • list(), create(), retrieve(), update()
    partial_update(), destroy()์˜ ๊ธฐ๋Šฅ

Path

์œ„์˜ ViewSet์„ ํ•˜๋‚˜์˜ pathํ•จ์ˆ˜๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ• ๊นŒ?
ํ•˜๋‚˜์˜ path๋กœ ListView, DetailView์˜ CRUD๊ฐ€ ๋ชจ๋‘ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ๊ฐ€?
๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•„์—ฐ์ ์œผ๋กœ 2๊ฐœ ์ด์ƒ์˜ path๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
path๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด(pathํ•จ์ˆ˜์˜ ๋‘ ๋ฒˆ์จฐ ์ธ์ž์˜ ํ•จ์ˆ˜๋ฅผ ๋ฌถ๋Š”๋‹ค)์ค„ ๋ฐฉ๋ฒ•์ด ํ•„์š”๋กœ ํ•œ๋‹ค.

path()๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” as_view()

as_view ํ•จ์ˆ˜ ๊ตฌ์„ฑ

as_view({'http_method' : '์ฒ˜๋ฆฌํ•  ํ•จ์ˆ˜'})

์˜ˆ์‹œ

์•„๋ž˜์™€ ๊ฐ™์ด as_viewํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  urlpatterns์— ๋„ฃ์–ด์ฃผ๋ฉด ์ž˜ ์ž‘๋™ํ•œ๋‹ค.
์ž์„ธํ•œ ๋‚ด์šฉ์€ Django REST framework ๊ณต์‹๋ฌธ์„œ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

path = PostViewSet.as_view({
    'get': 'retrieve',
    'put': 'update',
    'patch': 'partial_update',
    'delete': 'destroy'
})

urlpatterns = [
    path('', path)
]

Router

์œ„์—์„œ ์ž‘์„ฑํ–ˆ๋˜ ๊ด€๋ก€์ ์ธ URL ๋งตํ•‘ ๋‹จ๊ณ„๋ฅผ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•ด์ฃผ๋Š” ๋ฐฉ์‹

์‚ฌ์šฉ๋ฐฉ๋ฒ•

  1. rest_framework์˜ router์—์„œ DefaultRouter ์ถ”๊ฐ€
from rest_framework.router import DefaultRouter
  1. DefaultRouter๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ๋“ฑ๋ก

URL Prefix๋Š” 127.0.0.1:8000/post์™€ ๊ฐ™์€ URL์—์„œ post๋ถ€๋ถ„ ์ด๋‹ค.

router = DefaultRouter()
router.register(<URL Prefix>, <View Logic>)
  1. urlpatterns์— router์˜ urls ์ถ”๊ฐ€
urlpatterns = [
    path('', include(router.urls)),
]