์ค๋์ DRF์ Generic API VIew์ ๋ํด์ ์์๋ณธ๋ค.
Generic API View
์ด ํด๋์ค๋ ๊ธฐ์กด์ ์ฌ์ฉํ๋ APIView๋ฅผ ํ์ฅํ๋๋ก ํ๋ ํด๋์ค๋ค. CRUD์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๋ถ๋ถ์ ์ ๊ณตํ๋ค.
mixins๋ฅผ ์ฌ์ฉํด์ CRUD์ ํน์ ์ธ๋ถ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๊ณ , ์ค๋ฒ๋ผ์ด๋ฉ์ ํตํด ์ง์ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์๋ค.
[mixins ํฌ์คํ ]
https://he-kate1130.tistory.com/63
[Team 22] DRF - Mixins
Generic view์ ๊ฒฝ์ฐ CRUD์์ ์ ์ํ ๊ณตํต ๋ถ๋ถ์ ์ ๊ณตํ๋ ๋ทฐ์์ ์ด์ ํฌ์คํ ์์ ์์๋ณด์๋ค. ์ ๋ค๋ฆญ ๋ทฐ๋ ์ฌ๋ฌ๊ฐ์ Mixinํด๋์ค๋ฅผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ๊ฒ ๋๋ค. ์ค๋์ ์ ๋ค๋ฆญ๋ทฐ์ ํจ๊ผ ์ฐ์ด๋ ๋ฏน์ค
he-kate1130.tistory.com
Basic settings
๊ธฐ๋ณธ์ ์ธ view์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ attributes๊ฐ ํ์ํ๋ค.
queryset
๋ทฐ์ ๋๊ธธ ๊ฐ์ฒด์ ์ ๋ณด๋ฅผ ์ง์ ํ๋ค. ์ฆ, ์ฟผ๋ฆฌ์ ์ ๊ฐ์ฒด๋ฅผ ํด๋น ๋ทฐ์ ๋ฆฌํดํด์ฃผ๊ธฐ ์ํด์ ์ฌ์ฉํด์ผํ๋ค.
์ฟผ๋ฆฌ์ ์ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด queryset์ ์ค์ ํด๋๊ฑฐ๋, get_queryset()์ผ๋ก ์ค๋ฒ๋ผ์ด๋ํด์ ์ฌ์ฉํด์ผ ํ๋ค.
๋ง์ฝ view์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉ ํ ๋๋ queryset์ ์ง์ ์ ๊ทผํ๋ ๊ฒ ๋ณด๋ค๋ get_queryset()์ ํธ์ถํ๋๊ฒ์ด ์ข๋ค. ์ฟผ๋ฆฌ์ ์ด ํ๋ฒ ์ป์ด์ง๋ฉด, ์บ์๋ก ๋ชจ๋ ๋จ๊ธฐ ๋๋ฌธ์ด๋ค!
serializer_class
ํด๋น ๋ทฐ์์ ์ฌ์ฉํ ์๋ฆฌ์ผ๋ผ์ด์ ๋ฅผ ์ง์ ํ๋ค.
์ฟผ๋ฆฌ์ ์ฒ๋ผ ์ง์ ์ด ๋ถ๋ถ์ ์ค์ ํด๋๊ฑฐ๋, get_seializer_class()๋ฉ์๋๋ก ์ค๋ฒ๋ผ์ด๋ฉํด์ผ ํ๋ค.
lookup_field
๊ฐ๋ณ ๋ชจ๋ธ ๊ฐ์ฒด์ ์กฐํ์ ์ฌ์ฉํ ๋ชจ๋ธ์ ํ๋๋ฅผ ์ง์ ํ๋ค.
๊ธฐ๋ณธ๊ฐ์ผ๋ก pk๋ก ์ค์ ๋์ด์๊ณ , ์ฌ์ฉ์๊ฐ ์ง์ ์ง์ ํ๋ ค๋ฉด API view์ ์๋ฆฌ์ผ๋ผ์ด์ ์์ชฝ์ ์ง์ ์ปค์คํ ๊ฐ์ ์ ๋ ฅํด์ผ ํ๋ค.
lookup_url_kwarg
๊ฐ์ฒด์ ์กฐํ์ ์ฌ์ฉํ url ํค์๋ ์ธ์๋ฅผ ์ง์ ํ๋ ์์ฑ์ด๋ค.
๊ธฐ๋ณธ์ผ๋ก lookup_field์ ๊ฐ์ ๊ฐ์ผ๋ก ์ค์ ๋๋ค. ๋ํ ์ปค์คํ ๋ ๊ฐ๋ฅํ๋ค.
Pagination
ํ์ด์ง๋ค์ด์ ์ ์ ์ดํ๊ธฐ์ํด์ ๋ค์์ attributes๊ฐ ์ฌ์ฉ๋๋ค.
pagination_class
ํ์ด์ง๋ค์ด์ ํด๋์ค๋ ๋ฆฌ์คํธ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ด์ง๋ก ๋๋๋ ๊ฒฝ์ฐ์ ์ง์ ํด์ผํ๋ ์์ฑ์ด๋ค.
๊ธฐ๋ณธ๊ฐ์ผ๋ก๋ DEFAULT_PAGINATION_CLASS์ค์ ๊ฐ๊ณผ ๋์ผํ๊ฒ ๋์ด์๊ณ , pagination_class=None์ผ๋ก ์ค์ ํด๋๋ฉด ํด๋น ๋ทฐ์์๋ ํ์ด์ง๋ค์ด์ ์ด ๋นํ์ฑํ ๋๋ค.
Filtering
์ฟผ๋ฆฌ์ ์ ํํฐ๋งํ๋๋ฐ์ ์ฌ์ฉ๋๋ ํํฐ ๋ฐฑ์๋ ํด๋์ค์ ๋ชฉ๋ก์ ์ ์ดํ๋ค.
filter_backends
์ฟผ๋ฆฌ์ ์ ํํฐ๋งํ๋๋ฐ์ ์ฌ์ฉํ ํํฐ ํด๋์ค์ ๋ชฉ๋ก์ด๋ค.
๊ธฐ๋ณธ๊ฐ์ DEFAULT_FILTER_BACKENDS์ ์ค์ ๊ฐ๊ณผ ๋์ผํ๋ค.
'๐ฅProject > Team22' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Team22]django .env ํ๊ฒฝ๋ณ์ ํ์ฉํ๊ธฐ (0) | 2024.02.15 |
---|---|
[Team 22] DRF - Mixins (0) | 2024.02.08 |
[Team 22] DRF Authentication - dj-rest-auth (0) | 2024.02.08 |
[Team 22] Django REST framework (3) - Viewset (0) | 2024.02.03 |
[Team 22] Django REST Framework (2) - Serializers (0) | 2024.02.03 |