레트로한 느낌이 나는 전자제품이나 패션을 사고 파는 경매 서비스
프로젝트 정보
- 프로젝트: 경매 서비스 - 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서버에 접속할 수 있다.
서버에 접속하면 이제 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
FrontEnd
https://github.com/Churnobyl/20century_front.git
프로젝트 완성 후 감상
정신없이 시작해서 정신없이 끝났다.
4명이서 일주일 간 python코드와 javascript코드를 왔다갔다 하면서 여기저기 터지는 오류를 해결하느라 정신없었다.
백엔드에서 모델을 바꿔야 하는 이벤트가 발생해서 프론트엔드에서 경로를 하나하나 바꿔주어야 했다.
지금 생각해보면 각 api url를 변수로 한 파일에 저장해두고 그 경로만 바꿔줬으면 어땠을까 하는 생각이 든다.
다음 프로젝트 때는 코드를 체계적으로 정리하고 주석을 꼼꼼히 달 수 있도록 더 노력해야겠다.
항상 팀원들의 코드를 존중하자 화이팅!🎃
'프로그래밍 > 생각나는대로 프로젝트' 카테고리의 다른 글
[프로젝트] 08. 한글 학습 퀴즈 서비스 - 한 (Part 1. 퀴즈) (0) | 2023.07.17 |
---|---|
[프로젝트] 07. 가계부 SNS - 리치메이커 (0) | 2023.05.31 |
[프로젝트] 05. Django SNS CaMu (0) | 2023.04.16 |
[프로젝트] 04. Django 무신사 재고 관리 시스템 (0) | 2023.04.10 |
[프로젝트] 03. Text RPG게임 냥이 키우기 (0) | 2023.04.03 |