Skip to content

Latest commit

ย 

History

History
120 lines (102 loc) ยท 3.02 KB

File metadata and controls

120 lines (102 loc) ยท 3.02 KB

2์ฃผ์ฐจ - 3. Serializer ์‹ค์Šต - ์ฝ”๋“œ์ž‘์„ฑ

1. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ

python -m venv (๊ฐ€์ƒํ™˜๊ฒฝ ์ด๋ฆ„)

2. ํ•„์š” ํŒจํ‚ค์ง€ ์„ค์น˜

pip install djangorestframework
pip install django

3. Django ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

django-admin startproject (ํ”„๋กœ์ ํŠธ ์ด๋ฆ„)

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ›„ cd (ํ”„๋กœ์ ํŠธ ์ด๋ฆ„)์œผ๋กœ ํด๋” ์ด๋™

4. Django ์•ฑ ์ƒ์„ฑ

python manage.py startapp post

5. settings.py์— ์•ฑ ์ถ”๊ฐ€

Django Rest Framework๋„ ๋“ฑ๋ก ํ•ด์•ผํ•œ๋‹ค.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'post.apps.PostConfig',
]

6. URL ๊ด€๋ฆฌ

6-1. ์•ฑ ํด๋” ๋‚ด๋ถ€์— urls.py ์ƒ์„ฑ

๊ณ„์ธต์ ์œผ๋กœ URL์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ถ„ํ• ํ•œ๋‹ค.

6-2. ํ”„๋กœ์ ํŠธ ํด๋” urls.py์— ๋ชจ๋“ˆ ์ถ”๊ฐ€

from django.contrib import admin
from django.urls import path, include
import post.urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(post.urls)),
]

7. ์•ฑ ํด๋”์˜ models.py์— ๋ชจ๋ธ ํด๋ž˜์Šค ์ •์˜

class Post(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()

7-1. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ช…๋ น์–ด ์‹คํ–‰

python manage.py makemigrations
python manage.py migrate

8. ์•ฑ ํด๋” ๋‚ด๋ถ€์— serializer.py ์ƒ์„ฑ ๋ฐ ์ž‘์„ฑ

์–ด๋–ค ํด๋ž˜์Šค์˜ ์–ด๋–ค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€ ์•Œ๋ ค์ค€๋‹ค.

from .models import Post
from rest_framework import serializers

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = ['title', 'body'] 
        # ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ '__all__' ์‚ฌ์šฉ ๊ฐ€๋Šฅ

8. views.py ์ž‘์„ฑํ•˜๊ธฐ

rest_framework์˜ viewsets๋ชจ๋“ˆ๊ณผ ์ž‘์„ฑํ•œ ๋ชจ๋ธ๊ณผ Serializer์ถ”๊ฐ€

from rest_framework import viewsets
from .models import Post
from .serializer import PostSerializer

Django Rest Framework๋Š” Claa Base View๋‹ค.
๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋ž˜์Šค๋ฅผ view๋กœ์จ ์ž‘์„ฑํ•œ๋‹ค.
viewsets์˜ ModelViewSet์„ ์ƒ์†๋ฐ›๋Š”๋‹ค.

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

9. ์•ฑ ๋‚ด๋ถ€์˜ urls.py ์ž‘์„ฑํ•˜๊ธฐ

rest_framework์˜ routers์•ˆ์— DefaultRouter์™€
include์™€ ์ž‘์„ฑํ•œ views.py๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from . import views

rest_framework๋Š” Router๋ฅผ ์‚ฌ์šฉํ•ด URL์„ ๊ฒฐ์ •ํ•œ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด CRUD๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ URL์„ ์„ค์ •ํ•œ๋‹ค.

router = DefaultRouter()
router.register('post', views.PostViewSet)

urlpatterns = [
    path('', include(router.urls))
]

์‹คํ–‰ ๊ฒฐ๊ณผ