Miniconda와 SQL을 설치한 이후, 장고 프로젝트 초기 세팅 + 깃 연동 순서이다.
# 가상환경 생성
conda create -n 가상환경이름 python=3.8 (파이썬버전 꼭 추가해주기, 3.8이 안정적이다)
conda activate 가상환경이름
$ mysql -u root -p
mysql> create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;
$ pip install django (최신버전으로 설치할거라, 별도로 버전 명시 안함)
# 이후에 MySQL server에 접속하기 위한 package
$ pip install mysqlclient
(중요) mysql 설치되어 있는지 먼저 확인해주세요
아래 과정을 순서대로 실행한다.
어떤 분이 몇시간을 고생해서 알아내주신 덕분에 나도 오류를 해결할 수 있었다.
(두번째로 가상환경을 만들었을 땐, 아래 과정 없이 pip install mysqlclient
에 성공했다.)
Thanks to:
https://askubuntu.com/questions/1321141/unable-to-install-mysqlclient-on-ubuntu-20-10
#Step0
sudo apt install python3-dev build-essential
#Step1
sudo apt install libssl1.1
#Step2
sudo apt install libssl1.1=1.1.1f-1ubuntu2
#Step3
sudo apt install libssl-dev
#Step4
sudo apt install libmysqlclient-dev
#Step5
pip3 install mysqlclient
# !! 프로젝트를 생성할 디렉토리로 이동한 후 실행한다 !! (ex. Desktop)
$ django-admin startproject westarbucks .
$ cd westarbucks
# 우선 모든 Host 허용
ALLOWED_HOSTS = ['*']
# 필요없는 기능들은 주석처리해준다
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
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',
]
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
위에서의, admin site로의 path를 삭제하여, 아래처럼 수정한다.
from django.urls import path
urlpatterns = [
]
cd '생성한 프로젝트 폴더명'
touch my_settings.py
# my_settings.py
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명', # root
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
SECRET_KEY = '시크릿키'
# my_settings.py를 참조하는 settings.py
# settings.py
from . import my_settings # settings.py와 같은 디렉토리 안에 있는 경우
SECRET_KEY = my_settings.SECRET_KEY
DATABASES = my_settings.DATABASES
pip install django-cors-headers
설치 후, 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
아래처럼 보인다면 정상작동 한다는 의미이다.
생성한 장고 프로젝트를 git으로 관리할 수 있도록 초기화한다.
git init
명령어로 git 초기화git init
https://www.toptal.com/developers/gitignore
올리고 싶은, 올리고 싶지 않은, 올려서는 안되는 소스가 존재한다.
이를 구분하기 위해 git이 설치된 디렉토리에 .gitignore
파일을 생성해서 관리한다.
위 사이트에서 아래 키워드를 추가하여 .gitignore
파일에 정의할 요소들을 생성하여 파일에 붙여넣는다.
python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh
cd 프로젝트 폴더명git push origin main
touch .gitignore
vi .gitignore
############################
# gitignore.io 결과 전체 복사 #
############################
아래 두가지 추가
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)
# commit 할 사항들을 저장
git add .
# commit
git commit -m "Add: -Django Project Setting" # -m "commit comment" 달기
github 웹사이트에서 새로운 repository를 생성한다.
git branch -M main
git remote add origin "repository 주소"
git push origin main # 여기서 main은 branch 이름
브랜치를 생성 & 이동
브랜치 이름은 feature/crud
로 하겠다.
git branch 브랜치 이름 # 브랜치 생성
git checkout 브랜치 이름 # 해당 브랜치로 이동
# 생성과 동시에 이동하는 방법
git checkout -b 브랜치 이름
$ python manage.py startapp app이름 # app이름은 products로 하기로 한다
# settings.py
INSTALLED_APPS = [
...
'products',
git add .
git commit -m "Add: products application"
-Github repository branch push
git push origin "브랜치 이름"
products/models.py 작성하기
models.py에 작성한 python code를 database에 적용하기 위한 migration 파일(설계도)를 만드는 과정
python manage.py makemigrations app이름
makemigration으로 생성한 migration 파일(설계도)을 database에 적용
python manage.py migrate
mysql -u root -p
SHOW databases; # database 확인
USE database_name; # 사용할 데이터베이스 선택
SHOW tables; # table 확인
DESC table_name; # 해당 table의 정보 확인
SELECT * FROM table_name # 해당 table의 모든 데이터 확인
git add .
git commit -m "커밋 메시지"
git push origin feature/crud
Github 웹사이트로 가서, feature/crud → main 브랜치로 pull request를 날린다.