djangorestframework==2.3.13
์ djangorestframework==2.4.4
์ฌ์ด์ ์ด๋๊ฐ์์ ModelViewSet์ ๋ํด ์์ฑ๋ url conf๊ฐ '.'๋ฅผ ์ ์ธํ๋๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. (๋ง์นจํ/์ ) ๋ฌธ์. ์ฆ, ์ฌ์ฉ์ ์ ์ lookup_field๋ ๋๋ฉ์ธ ์ด๋ฆ ๋๋ ์ด ๋ฌธ์๋ฅผ ํฌํจํ๋ ๋ค๋ฅธ ๋ฌธ์์ด์ด ๋ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ทฐ ์ธํธ๊ฐ ์ ๊ณต๋ฉ๋๋ค.
class ZoneViewSet(viewsets.ModelViewSet):
lookup_field = 'domain__name'
๋ค์ URL์ด ์์ฑ๋ฉ๋๋ค( djangorestframework==2.3.13
).
^api/ ^v1/ ^zones/(?P<domain__name>[^/]+)/$ [name='zone-detail']
^api/ ^v1/ ^zones/(?P<domain__name>[^/]+)/\.(?P<format>[a-z0-9]+)$ [name='zone-detail']
๊ทธ๋ฆฌ๊ณ ์ด์ djangorestframework==2.4.4
์ ํจ๊ป :
^api/ ^v1/ ^zones//$ [name='zone-detail']
^api/ ^v1/ ^zones/(?P<domain__name>[^/.]+)/\.(?P<format>[a-z0-9]+)$ [name='zone-detail']
[^]
๋ ์ ์ธ ์ธํธ๋ฅผ ์ง์ ํ๋ฏ๋ก [^/]
๋ชจ๋ ์ฌ๋์๋ฅผ ์ ์ธํ๊ณ [^/.]
์ฌ๋์ ๋ฐ ๋ง์นจํ(์ ) ๋ฌธ์๋ฅผ ์ ์ธํฉ๋๋ค.
URI์ ๋ง์นจํ๋ฅผ ์ ํํ ์ด์ ๊ฐ ์์ผ๋ฉฐ ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ ค์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์์ ์ด ์ด์ ๊ธฐ๋ฅ์ ๊นจ๋จ๋ฆฐ ์ปค๋ฐ์ ๋๋ค . ์ปค๋ฐ ๋ก๊ทธ๋ ๋ฌธ์ ๋ฅผ ์๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ๋๋ ๋น์ ์ด ๊ทธ๊ฒ์ ๋ณ๊ฒฝํ ์๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋ฐ๊ฒฌํ ์ฌ๋์ ๊ธฐ๋ณธ ๋ผ์ฐํฐ์ ์ํด ์์ฑ๋ urlconf์ ๋ง์นจํ๋ฅผ ํ์ฉํ๋ ค๋ฉด ๋ทฐ์
์ lookup_value_regex = '[^/]+'
๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์ ์ด์ ๋ํธ๊ฐ ์ ์ธ๋ ์ด์ ๊ฐ ๋ญ์ง...
Iirc ์ ์ URL ๋ด์ ํ์ฅ ์ฝํ ์ธ ์ ํ์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๋ฐฉํดํฉ๋๋ค(์: /myendpoint.json).
๊ทธ๋ฆฌ๊ณ ์ด์ ๊ธฐ๋ฅ์ธ 3cd15fb ๋ฅผ ๊นจ๋จ๋ฆฐ ์ปค๋ฐ์ด ์์ต๋๋ค. ์ปค๋ฐ ๋ก๊ทธ๋ ๋ฌธ์ ๋ฅผ ์๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ๋๋ ๋น์ ์ด ๊ทธ๊ฒ์ ๋ณ๊ฒฝํ ์๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋ฐ๊ฒฌํ ์ฌ๋์ ๊ธฐ๋ณธ ๋ผ์ฐํฐ์ ์ํด ์์ฑ๋ urlconf์ ๋ง์นจํ๋ฅผ ํ์ฉํ๋ ค๋ฉด ๋ทฐ์ ์
lookup_value_regex = '[^/]+'
๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๋๋จํ ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ๋ฆฌ๊ณ ๋ค์์ ์ด ์ด์ ๊ธฐ๋ฅ์ ๊นจ๋จ๋ฆฐ ์ปค๋ฐ์ ๋๋ค . ์ปค๋ฐ ๋ก๊ทธ๋ ๋ฌธ์ ๋ฅผ ์๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค. ๋๋ ๋น์ ์ด ๊ทธ๊ฒ์ ๋ณ๊ฒฝํ ์๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋ฐ๊ฒฌํ ์ฌ๋์ ๊ธฐ๋ณธ ๋ผ์ฐํฐ์ ์ํด ์์ฑ๋ urlconf์ ๋ง์นจํ๋ฅผ ํ์ฉํ๋ ค๋ฉด ๋ทฐ์ ์
lookup_value_regex = '[^/]+'
๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.