목차
[문제]
- 다음 링크의 정보와 ERD를 참고하여 REST API를 만드시오.
- ERD
- Entity: Product
- Fields: ProductId(PK), 상품 이름, 상품 설명, 상품 가격, 재고량, 상품 등록 일시
- ERD
Django
The web framework for perfectionists with deadlines.
docs.djangoproject.com
& django-admin startproject myproject
& cd myproject
& python manage.py startapp products
`products` 앱의 `models.py` 파일에 모델을 정의한다.
- products/models.py
from django.db import models
class Product(models.Model):
productId = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
stock = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
- 다음으로, 해당 모델을 시리얼라이저로 변환한다
& pip install djangorestframework
- 시리얼라이저를 생성하기 위해 `products` 앱 내에 `serializers.py` 파일을 만든다.
- products/serializers.py
from rest_framework import serializers
from .models import Product
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'
- 이제 뷰를 생성한다.
- products/views.py
from rest_framework import generics
from .models import Product
from .serializers import ProductSerializer
class ProductListCreateAPIView(generics.ListCreateAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
class ProductRetrieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
- 마지막으로, URL을 설정하여 API를 라우팅한다.
- products/urls.py
from django.urls import path
from .views import ProductListCreateAPIView, ProductRetrieveUpdateDestroyAPIView
urlpatterns = [
path('products/', ProductListCreateAPIView.as_view()),
path('products/<int:pk>/', ProductRetrieveUpdateDestroyAPIView.as_view()),
]
- 프로젝트 루트 폴더의 `urls.py` 파일에서 앱의 URL을 추가한다.
- myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('products.urls')),
]
- 데이터베이스 마이그레이션
- 데이터베이스 마이그레이션 실행
$ python manage.py makemigrations
$ python manage.py migrate
- 이제 Django 서버를 실행하고 API에 접근할 수 있다.
$ python manage.py runserver
- 이제 다음과 같이 API에 접근할 수 있다.
- 모든 상품 보기 및 새 상품 만들기:
- `GET /api/products/`
- `POST /api/products/`
- 특정 상품 보기, 수정 및 삭제:
- `GET /api/products/<productId>/`
- `PUT /api/products/<productId>/`
- `DELETE /api/products/<productId>/`
위에서 `<productId>`는 각 상품의 고유한 ID이다.

'천재교육' 카테고리의 다른 글
회고 : LMS System Sub-Project(JSX) (0) | 2024.04.07 |
---|---|
Online Education API Mini Project (1) | 2024.03.21 |
에듀테크 PM 프로덕트 매니저(12) (0) | 2024.03.13 |
에듀테크 PM 프로덕트 매니저(11) (0) | 2024.03.12 |
에듀테크 PM 프로덕트 매니저(10) (0) | 2024.02.23 |
[문제]
- 다음 링크의 정보와 ERD를 참고하여 REST API를 만드시오.
- ERD
- Entity: Product
- Fields: ProductId(PK), 상품 이름, 상품 설명, 상품 가격, 재고량, 상품 등록 일시
- ERD
Django
The web framework for perfectionists with deadlines.
docs.djangoproject.com
& django-admin startproject myproject
& cd myproject
& python manage.py startapp products
`products` 앱의 `models.py` 파일에 모델을 정의한다.
- products/models.py
from django.db import models
class Product(models.Model):
productId = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
stock = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
- 다음으로, 해당 모델을 시리얼라이저로 변환한다
& pip install djangorestframework
- 시리얼라이저를 생성하기 위해 `products` 앱 내에 `serializers.py` 파일을 만든다.
- products/serializers.py
from rest_framework import serializers
from .models import Product
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'
- 이제 뷰를 생성한다.
- products/views.py
from rest_framework import generics
from .models import Product
from .serializers import ProductSerializer
class ProductListCreateAPIView(generics.ListCreateAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
class ProductRetrieveUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
- 마지막으로, URL을 설정하여 API를 라우팅한다.
- products/urls.py
from django.urls import path
from .views import ProductListCreateAPIView, ProductRetrieveUpdateDestroyAPIView
urlpatterns = [
path('products/', ProductListCreateAPIView.as_view()),
path('products/<int:pk>/', ProductRetrieveUpdateDestroyAPIView.as_view()),
]
- 프로젝트 루트 폴더의 `urls.py` 파일에서 앱의 URL을 추가한다.
- myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('products.urls')),
]
- 데이터베이스 마이그레이션
- 데이터베이스 마이그레이션 실행
$ python manage.py makemigrations
$ python manage.py migrate
- 이제 Django 서버를 실행하고 API에 접근할 수 있다.
$ python manage.py runserver
- 이제 다음과 같이 API에 접근할 수 있다.
- 모든 상품 보기 및 새 상품 만들기:
- `GET /api/products/`
- `POST /api/products/`
- 특정 상품 보기, 수정 및 삭제:
- `GET /api/products/<productId>/`
- `PUT /api/products/<productId>/`
- `DELETE /api/products/<productId>/`
위에서 `<productId>`는 각 상품의 고유한 ID이다.

'천재교육' 카테고리의 다른 글
회고 : LMS System Sub-Project(JSX) (0) | 2024.04.07 |
---|---|
Online Education API Mini Project (1) | 2024.03.21 |
에듀테크 PM 프로덕트 매니저(12) (0) | 2024.03.13 |
에듀테크 PM 프로덕트 매니저(11) (0) | 2024.03.12 |
에듀테크 PM 프로덕트 매니저(10) (0) | 2024.02.23 |