테스트겸 상품 추천 페이지 만들면서 Django DRF에 관심이 있었다.
Django는 한두번 해본적 있는데 이제 기억이 또 가물가물해서...(안쓰다보면 자꾸 잊는다.)
아무튼 귀찮아서 chatGPT의 도움을 받아 테스트 환경을 만들었는데 몇가지 빠진 부분이있어서 보완하며 테스트 환경을 만들어 진행해보았다.
일단 연동을 목적으로 하고 있으며 패키지 분석이나 버전등 체크는 진행하지 않았다.

프론트엔드 라이브러리
Django Rest FrameWork
python venv 적용상태라 가정한다.
Django 프로젝트 생성gpt 참고
# 참고하고 변형해서 사용한다.
django-admin startproject myproject
cd myproject
Django 프로젝트작성자 수정 적용
django-admin startproject myproject .
Django 앱 생성gpt적용
python manage.py startapp myapp
myproject/settings.py 파일을 열어 INSTALLED_APPS에 myapp을 추가합니다.gpt적용
INSTALLED_APPS = [
...
'myapp',
...
]
Django와 React를 통신하게 하기 위해 Django REST framework를 사용합니다.gpt적용
pip install djangorestframework
settings.py에 REST framework를 추가합니다.gpt적용
INSTALLED_APPS = [
...
'rest_framework',
...
]
myapp/models.py에서 모델을 정의합니다.gpt적용
from django.db import models
class Item(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return self.name
모델을 적용합니다. 작성자 추가
python manage.py makemigrations
python manage.py migrate
gpt에서 이 과정이 빠져있어 추가하였다.
myapp/admin.py 관리자 페이지에 등록 합니다.작성자 추가
from django.contrib import admin
from .models import Item
admin.site.register(Item)
gpt에서 이 과정이 빠져있어 추가하였다. 이부분이 누락되면 개발 전까지 데이터 입력 수단이 없다. shell을 이용하면 되기는 한다...

myapp/serializers.py 파일을 생성하고 시리얼라이저를 정의합니다.gpt적용
from rest_framework import serializers
from .models import Item
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = '__all__'
myapp/views.py에서 API 뷰를 설정합니다.gpt적용
from rest_framework import viewsets
from .models import Item
from .serializers import ItemSerializer
class ItemViewSet(viewsets.ModelViewSet):
queryset = Item.objects.all()
serializer_class = ItemSerializer
myapp/urls.py 파일을 생성하고 URL 라우팅을 설정합니다.gpt적용
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import ItemViewSet
router = DefaultRouter()
router.register(r'items', ItemViewSet)
urlpatterns = [
path('', include(router.urls)),
]
myproject/urls.py에 myapp의 URL을 포함시킵니다.gpt적용
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('myapp.urls')),
]
# python 프로젝트와 동일 레벨에 서 진행한다.
npx create-react-app myfrontend

React에서 Django API와 통신하기 위해 Axios를 사용합니다.gpt적용
npm install axios
src/App.js 파일에서 Axios를 사용하여 API를 호출합니다.gpt적용
import React, { useState, useEffect } from 'react';
import axios from 'axios';
function App() {
const [items, setItems] = useState([]);
useEffect(() => {
axios.get('http://localhost:8000/api/items/')
.then(response => {
setItems(response.data);
})
.catch(error => {
console.error('There was an error fetching the items!', error);
});
}, []);
return (
<div className="App">
<h1>Items</h1>
<ul>
{items.map(item => (
<li key={item.id}>{item.name}: {item.description}</li>
))}
</ul>
</div>
);
}
export default App;
Django와 React가 다른 포트에서 실행되므로 CORS 설정이 필요합니다.gpt적용
pip install django-cors-headers
settings.py에 CORS 설정을 추가합니다.gpt적용
INSTALLED_APPS = [
...
'corsheaders',
...
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
CORS_ALLOWED_ORIGINS = [
"http://localhost:3000",
]
데이터 생성을 위하여 관리자 계정을 생성합니다. 작성자 추가
python manage.py createsuperuser
python manage.py runserver
http://127.0.0.1:8000/admin
MYAPP 카테고리 Items를 눌러 데이터를 생성한다.작성자 추가

이 부분이 누락되면 Items라는 단어만 보이며, 연동되었는지 확인이 불가하다. gpt에 빠져서 추가하였음.
npm run start

약 1시간정도 테스트를 진행해보았다.
테스트 환경으로 급하게 진행해보았지만,
gpt를 이용하면 약간의 기초 지식만 있어도 연동 할수 있다는 점이 일단 놀라웠다...
응용하는데는 추가 학습이 필요하리라는 생각과 음...일단 알긴 알아야 활용하기도 좋을것 같다.