프로그래밍/생각나는대로 프로젝트

[프로젝트] 06. DRF 경매 서비스 - 20세기 박물관

Churnobyl 2023. 5. 16. 20:15
728x90
반응형

 

 레트로한 느낌이 나는 전자제품이나 패션을 사고 파는 경매 서비스

 


프로젝트 정보


  • 프로젝트: 경매 서비스 - 20세기 박물관
  • 개발기간: 2023.05.08 - 2023.05.14 ( 7일 )
  • 주요 기능: 경매 기능, 경매 로그, 북마크, JWT 인증
  • 역할
    • Github 레포지토리 관리 총괄
    • 백엔드
    • 프론트엔드
    • 프로젝트 발표
  • 기술스택:         

프로젝트 구성


★ 파일구조

 관리 앱 centurymuseum, 메인 컨텐츠 앱 article, 유저 관리 앱 user으로 구성

.
├── article
│   ├── migrations
│   ├── admin.py
│   ├── models.py
│   ├── scheduler.py
│   ├── serializers.py
│   ├── urls.py
│   └── views.py
├── centurymuseum
├── media
│   ├── article
│   │   └── 2023
│   │       └── 5
│   │           ├── 15
│   │           │   ├── 신세대 패숀
│   │           │   │   └── 52e29141d2c94b868945eb14cd4e85a6_신세대_패숀.jpg
│   └── profile
│       └── 2023
│           └── 5
│               └── 15
│                   └── aaa
│                       └── 1af4e59858944790b72aed8ff4cafd80_aaa.png
├── user
│   ├── migrations
│   ├── admin.py
│   ├── models.py
│   ├── serializers.py
│   ├── urls.py
│   └── views.py
├── venv
├── .env
├── .gitignore
├── auction.log
├── manage.py
├── README.md
└── requirements.txt

 

 


주요 코드 리뷰


01. MySQL DB 변경

 sqlite는 서버가 별도로 필요없고 가볍다는 장점은 있지만 인증 기능이 없어 아무나 DB에 접근할 수 있다는 점다중 사용자 엑세스에 적합하지 않다는 단점 때문에 현업에서 사용하지 않는다. 따라서 이번 프로젝트에서는 MySQL을 DB로 사용하기로 했다.

 

 Django와 MySQL을 연동할 수 있는 방식은 여러가지가 있다

 우리는 Django에서 권장하는 첫번째 방식을 사용했는데, 나머지도 간단히 알아보면 MySQL Connector/Python은 MySQL에서 개발한 드라이버로 MySQL을 Python과 연결할 수 있도록 하며 추가적인 라이브러리 없이 연결이 가능하다. pymysql은 mysqlclient 개발자가 순수 파이썬만을 이용해서 만든 프로젝트다. mysqlclient, pymysql 둘 다 장고 프로젝트에 적용하는 방법은 거의 유사하지만 mysqlclient는 C로 만들어져서 성능적으로 우월하므로 프로젝트에 mysqlclient을 사용하도록 한다.

 

 


적용방법

 MySQL을 설치하고 root계정의 비밀번호를 기억해둔다.

설치완료 후 MySQL Workbench에서 새로운  커넥션을 추가할 때 MySQL 서버 설치했던 정보를 기입하면 MySQL서버에 접속할 수 있다.

Setup New Connection

 서버에 접속하면 이제 DB를 생성해야 한다. charset은 이모지(🎃)를 사용할 수 있는 utf8mb4로 하고 collate(collaction)는 일반적인 정렬 기준인 utf8mb4_general_ci로 한다.

-- django_museum 데이터베이스 생성
CREATE DATASBASE django_museum CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- django_meseum을 사용
USE django_museum;

 

 MySQL 서버에 새로운 데이터베이스를 생성했다면 이제 장고에서 연결시켜주면 된다.

pip install mysqlclient

 

 가상환경에 mysqlclient를 설치하고 settings.py에서 DATABASES 항목을 수정한다.

# settings.py
from my_settings import DATABASES

# ...
DATABASES = my_settings.DATABASES
# ...

 

# my_settings.py

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysql 데이터베이스 이름', # 연동할 mysql db 이름
        'USER': 'root', # db 접속 계정명
        'PASSWORD': '비밀번호', # 해당 계정 비밀번호
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

 레포지토리를 각자 포크해 각자의 로컬환경에서 개발을 했어야 하므로 my_settings.py라는 파일을 만들어주어서 각자 DB서버 정보로 DB에 접속할 수 있도록 했다.

 

 

 


프로젝트 결과물

BackEnd

https://github.com/Churnobyl/20century.git

 

GitHub - Churnobyl/20century

Contribute to Churnobyl/20century development by creating an account on GitHub.

github.com

 

FrontEnd

https://github.com/Churnobyl/20century_front.git

 

GitHub - Churnobyl/20century_front

Contribute to Churnobyl/20century_front development by creating an account on GitHub.

github.com

 

 

 


프로젝트 완성 후 감상

정신없이 시작해서 정신없이 끝났다.

4명이서 일주일 간 python코드와 javascript코드를 왔다갔다 하면서 여기저기 터지는 오류를 해결하느라 정신없었다.

백엔드에서 모델을 바꿔야 하는 이벤트가 발생해서 프론트엔드에서 경로를 하나하나 바꿔주어야 했다.

지금 생각해보면 각 api url를 변수로 한 파일에 저장해두고 그 경로만 바꿔줬으면 어땠을까 하는 생각이 든다.

다음 프로젝트 때는 코드를 체계적으로 정리하고 주석을 꼼꼼히 달 수 있도록 더 노력해야겠다.

항상 팀원들의 코드를 존중하자 화이팅!🎃

반응형