Starbuck 홈페이지에 나와있는 상품들을 바탕으로 쓰여진 ERD를 바탕으로,
클래스를 작성하고, Django Model을 활용하여 Database에 table을 생성,
Django Shell에서
QuerySet API를 이용하여 데이터를 생성(C), 조회(R), 수정(U), 삭제(D)하여 보자.
일단 conda를 이용하여 가상환경을 생성한다.
conda create -n westarbucks python=3.9
conda activate westarbucks
'westarbucks'라는 가상환경을 만들고, 실행해주었다.
그 후 mysql를 이용하여 Database를 생성한다.
mysql -u root -p
mysql> create database westarbucks character set utf8mb4 collate utf8mb4_general_ci;
마찬가지로 'westarbucks'라는 이름의 Database를 생성해주고,
한글이 깨지는 것을 막기위해 속성을 설정해주었다.
그리고 Django와 mysql server에 접속하기 위한 package를 설치해준다.
pip install django
pip install mysqlclient
설치가 끝나면, Project를 생성하고 싶은 디렉토리로 이동한 다음
django-admin startproject westarbucks
Project 생성 후 디렉토리 안으로 이동한다.
Project의 setting을 설정해주어야 하는데,
일단 Project 내부의 settings.py
를 찾아서 다음과 같이 변경한다.
ALLOWED_HOSTS = ['*'] # 모든 IP를 허용
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
'products',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
# 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware',
]
# 기본 내장된 admin과 csrf, auth를 주석처리
변경이 완료되면, westarbucks/urls.py
파일도 수정해준다.
westarbucks/urls.py
from django.urls import path
urlpatterns = [
]
settings.py
에 존재하는 SECRET_KEY, DATABASES 등은 공유할 사항이 아니기 때문에 별도의 파일을 만들어서 관리하는 것이 좋다.
그래서 manage.py
가 있는 디렉토리로 이동 후,
별도의 my_settings.py
를 만들어 다음과 같이 입력한다.
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
SECRET_KEY = '시크릿키' # setting.py 내 SECRET_KEY 사용
그 후 settings.py
를 열어 my_settings.py
와 연동해준다.
settings.py
from pathlib import Path #기존에 settings.py 에 있는 코드
from my_settings import DATABASES, SECRET_KEY
...
DATABASES = DATABASES
SECRET_KEY = SECRET_KEY
마지막으로 통신이 발생할때,
Cross Domain 이슈를 막기 위해 corsheaders를 설정 해주어야한다.
pip install django-cors-headers
django-cors-headers 라이브러리를 받은 다음
Project의 settings.py
를 열어,
INSTALLED_APPS = [
...
'corsheaders'
]
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
...
...
#REMOVE_APPEND_SLASH_WARNING
APPEND_SLASH = False
##CORS
CORS_ORIGIN_ALLOW_ALL=True
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
위와 같이 입력해주면 모든 설정이 완료된다!
제대로 설정됬는지 확인하기 위해 서버를 실행시켜,
python manage.py runserver
오류 없이 정상적으로 작동되면 제대로 설정이 완료된 것이다.
위에서 생성한 Project를 git을 이용하여 관리할 수 있도록 초기화 한다.
manage.py
가 있는 디렉토리에서,
git init
으로 git을 초기화 시킨 다음에,
.gitignore
파일을 먼저 작성한다.
.gitignore
앞서 생성하였던
my_settings.py
와 같이 공유하면 안되는 것들을 구분하기 위해.gitignore
파일을 만들어 관리하는 것이다먼저, gitignore사이트 에 접속하여
아래와 같은 키워드들을 추가하고 Create 를 한다.
|| python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh... ||그리고 그 내용들을
.gitignore
파일을 열어서########################### # gitignore.io 결과 전체 복사# ########################### # 관리할 파일들 추가 # my_settings.py
위와 같은 식으로 입력하면 완료된다.
그리고 초기셋팅한 것을 git에 기록한다.
git add .
git commit "CREATE: 프로젝트 초기 셋팅"
생성한 git을 github에 연동하기 위해
github 사이트에서 westarbucks라는 repository를 만들었다.
그리고 컴퓨터의 default branch를 master에서 main으로 변경한다.
(master라는 단어가 신분제도의 잔재이기 때문에..)
git branch -M main
다음으로 repository 주소를 remote 한다.
git remote add origin repository 주소
마지막으로 위에서 기록한 초기셋팅을 main branch github에 push한다.
git push origin main
모든 과정을 마치면, github에 다음과 같이 main branch에 초기셋팅이 추가된다.
민님, 엄청 깔끔하게 정리 잘 해두셨네요 ㅎㅎ
아직 대화를 나눠보진 못했지만, 23기 동기입니다 ㅋㅋㅋㅋ 기초환경 설정에서 애를 먹다가
민님 포스팅 보면서 틀린 내용을 찾아낼 수 있었어요 🙂 좋은 포스팅 감사합니당!