가상환경 생성
프로젝트마다 독립적인 패키지의 관리를 위해 새로운 가상환경을 생성해서 사용하도록 한다.
# 가상환경 생성
conda create -n "가상환경 이름"
conda activate "가상환경 이름"
Database 생성
$ mysql -u root -p
mysql> create database NAME character set utf8mb4 collate utf8mb4_general_ci;
Project Python Package 설치
pip install django
# 이후에 MySQL server에 접속하기 위한 package
pip install mysqlclient
(중요) mysql 설치되어 있는지 먼저 확인해주세요
Django Project 생성
django-admin startproject westarbucks
cd westarbucks
Settings.py 설정
IP 허용
ALLOWED_HOSTS = ['*']
주석처리 (admin, csrf, auth)
(중요) 추가로 westarbucks/urls.py를 아래와 같이 수정해주세요.
```python
from django.urls import path
urlpatterns = [
]
```
my_settings.py 생성 (DATABASES, SECRET_KEY)
- 장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다. 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
- settings.py에 바로 저장되는 방식은 지양해야 합니다.
- wecode 에서는 별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행합니다.
```bash
cd '생성한 프로젝트 폴더명'
touch 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 = '시크릿키' #settings.py에 있는 secret_key 를 사용합니다.
settings.py ↔ my_settings.py 연동
from pathlib import Path #기존에 settings.py 에 있는 코드
from my_settings import DATABASES, SECRET_KEY
...
DATABASES = DATABASES
SECRET_KEY = SECRET_KEY
M1 mysql setting
```bash
pip install PyMySQL
```
- pymysql package 설치 후 settings.py에 추가
```python
from pathlib import Path #기존에 settings.py 에 있는 코드
from my_settings.py import DATABASES, SECRET_KEY
import pymysql
pymysql.install_as_MySQLdb()
```
corsheaders
pip install django-cors-headers
설치했다면 settings.py에 INSTALLD_APPS 안에 추가해줘야합니다.
INSTALLED_APPS = [
...
'corsheaders'
]
middleware도 추가해야합니다.
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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
모든 내용은 settings.py안에 기록되야 합니다.
프로젝트 서버 실행
서버 동작(Runserver)을 통한 오류 검증
python manage.py runserver
git 초기화
생성한 장고 프로젝트를 git으로 관리할 수 있도록 초기화 한다.
- manage.py 가 위치한 곳으로 이동
- git init
명령어로 git 초기화
git init
.gitignore 생성
- 코드를 공유하기 위해서 깃을 사용하지만 올리고 싶지 않은것이나 올려서는 안되는 것들이 존재한다. 이를 구분하기위해 깃이 설치된 디렉토리에 .gitignore 파일을 생성해서 관리한다.
아래 사이트에서 사용하는 환경에 해당하는 키워드를 선택하면, 자동으로 .gitignore 파일에 정의할 요소들을 생성 해줍니다.
https://www.toptal.com/developers/gitignore
- 아래 키워드를 추가 후 Create.
> python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh
- Create 하여 나온 내용을 `.gitignore` 파일 생성 후, 붙여넣기
*키워드 잘 입력해서 요소들 생성하기 ! 몇가지를 뺴놓고 했더니 아주 올리지 않으려고한
my_setting가 올라가고 아주 엉망이었다. 주의하자!ㅇ
```bash
cd '프로젝트 폴더명'
touch .gitignore
vi .gitignore
############################
# gitignore.io 결과 전체 복사 #
############################
# 가장 하단 my_settings.py 추가하기
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)
```
add & commit
git add .
git commit -m "Add: Django Project Setting"
Branch & Application 생성
Branch 생성
feature/crud
브랜치를 생성 & 이동
git branch 브랜치 이름 # 브랜치 생성
git checkout 브랜치 이름 # 해당 브랜치로 이동
# 생성과 동시에 이동하는 방법
git checkout -b 브랜치 이름
Application 생성
settings.py 설정 후 app 생성
$ python manage.py startapp products
settings.py installed_apps 추가
# settings.py
INSTALLED_APPS = [
...
'products',
Github Push
git add & commit
git add .
git commit -m "Add: products application"
Optional) git 상태 확인 : git status
Optional) git 상태 확인 : git status
Commit history 확인 : git log
Github repo 생성
github 사이트 → New repository
git_practice
폴더와 github repository 연동
: git remote add origin repository주소
git push : git push origin main