맥에서 호스트 알아보기 : ifconfig |grep inet
makemigraions / 앱 이름 = 내가 작업한 것만
migrate = 다운받고 남의 것 할때. 완전 초기 설정일때
공식 마스터 브랜치로 작업하면 안 됨! 나만의 브랜치에서 작업하고, 머지나 풀 올리기 위해서만 마스터로 전환한 후 사용해야한다. 잊지 말것
2. branch 생성
$ git branch feature/"이름"
$ git checkout feature/"이름"
3. "이름"으로 django project 생성
$ django-admin startproject "이름"
$ cd "이름"
공동작업은 넣지 않았음
- 가상환경 생성
- 설치한 가상환경 활성화 뒤 장고 설치
- 프로젝트 생성, cors-headers 설치
- mysqlclient 설치, pip freeze 로 설치된 사항 전체 확인하기
- 생선한 프로젝트 폴더로 이동(cd) 뒤 .gitignore 파일 생성
.gitignore 파일은 숨겨져 있으므로 일반 ls 명령어로는 볼 수 없다. ls -al
해서 생성됐는지 확인해야한다.
.gitignore 파일은 .gitignore 사이트에서 사용하는 편집 프로그램과 운영체제를 검색한 후 알맞게 커스텀 된 파일을 받을 수 있다. touch 명령어를 통해서 파일을 생성하고 복붙해 온 것을 그대로 넣고 저장할 것.
5-1. .gitignore 추가사항
### Django ###
*.log
*.pot
*.pyc
__pycache__/
local_settings.py
db.sqlite3i
db.sqlite3-journal
media
*.csv <-- 추가
my_settings.py <-- 추가
- 보안을 위한 my_settings.py 생성 후 확인
## vi settings.py 에 기록되는 것들
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명', --> 생성할 데이터베이스 이름
'USER': 'DB접속 계정명', --> root
'PASSWORD': 'DB접속용 비밀번호', --> 내 경우는 없으므로 ' ' 했다.
'HOST': '실제 DB 주소', --> 와이파이 네트워크
'PORT': '포트번호', --> 내 경우는 3306
}
}
SECRET = {
'secret':'시크릿키', --> 시크릿키는 원래 생성된 장고의 settings.py에서 긁어 가져온다.
}
다 하고나면 별도의 보안을 위해 touch 해 준 my_settings.py가 생성된 것을 볼 수 있다.
- 장고에서 생성된 settings.py 수정하기
(1) cors 처리를 위해 해당 가상환경에 cors-headers 플러그인 설치를 했으므로(3)번 이에 대해 settings.py를 수정한 뒤 INSTALLD_APPS 안에 추가
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
'corsheaders'
]
(2) middleware도 추가
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
(3) settings.py 맨 하단에 추가내용 복붙
#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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
(4) 그리고 사용하지 않는 목록은 주석처리
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
]
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',
]
(5) 호스트 설정
ALLOWED_HOSTS = ['*']
(6) my_settings.py DATABASE 설정한 것을 settings.py에 적용
import my_settings <--my_settings 에서 설정한 것 불러옴
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = my_settings.SECRET['secret'] <-- 이부분 수정
(7) 데이터베이스 경로 수정
DATABASES = my_settings.DATABASES <-- 기존 내용 주석처리 후 추가
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
# }
- 가상환경 비활성 후 mysql 진입. 테이블 생성. character set utf8mb4 set utf8mb4 collate utf8mb4_general_ci; 추가
mysql 깨지는 것을 방지하기 위해 사용한다
create database NAME character set utf8mb4 collate utf8mb4_general_ci;
- 프로젝트 폴더 내 requirement 파일 생성
- migrate 후 git 올리기
git 에 올릴 경우 폴더 전체가 아니라 manage.py가 있는 위치에서 그 파일들만 올린다.
초기설정이 완료된 것을 볼 수 있다.