$ conda create -n westagram python=3.8
# 생성
$ conda activate westagram
# 활성화
mysql>> CREATE DATABASE westagram CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
git clone 'github 주소'
# (중요) 꼭 가상환경 확인해주세요!
$ pip install django
# 이후에 MySQL server에 접속하기 위한 package (중요) mysql 설치되어 있는지 먼저 확인해주세요
$ pip install mysqlclient
$ pip install django-cors-headers
git branch feature/junga-initial-setting
# 생성
git checkout feature/junga-initial-setting
# 이동
$ django-admin startproject westagram
$ cd westagram
< settings.py 설정 >
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',
]
(중요) 추가로 westagram/urls.py를 아래와 같이 수정해주세요.
from django.urls import path
urlpatterns = [
]
< my_settings.py 생성 >
! manage.py와 같은 위치에 생성 !
장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다. 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
settings.py에 바로 저장되는 방식은 지양해야 합니다.
별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행
파일에 실제 쓰여지는 내용
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'westagram', # 데이터베이스명
'USER': 'root', # db접속 계정명
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'}
}
}
SECRET_KEY = '시크릿키' #settings.py에 있는 secret_key 를 사용합니다.
< settings.py ↔ my_settings.py 연동 >
#settings.py를 수정합니다.
from pathlib import Path #기존에 settings.py 에 있는 코드
from my_settings.py import DATABASES, SECRET_KEY
...
DATABASES = DATABASES
SECRET_KEY = SECRET_KEY
< corsheaders >
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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
< requirements.txt 생성 >
$ pip freeze
touch requirements.txt
vi requirements.txt
Django==3.2.4
django-cors-headers==3.7.0
mysqlclient==2.0.3
# m1의 경우 아래 패키지도 추가해주세요.
PyMySQL==1.0.2
< .gitignore 생성 >
! manage.py와 같은 위치에 생성 !
python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh
https://www.toptal.com/developers/gitignore
.gitignore
파일 생성 후, 붙여넣기touch .gitignore
vi .gitignore
############################
# gitignore.io 결과 전체 복사 #
############################
# 가장 하단 my_settings.py 추가하기
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)
< 프로젝트 서버 실행 >
├── .gitignore # 숨김설정 되어 있습니다.
├── manage.py
├── my_settings.py
├── requirements.txt
└── westagram
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
서버 동작(Runserver)을 통한 오류 검증
$ python manage.py runserver # manage.py 위치에서 작성
### (중요) git branch 를 꼭 feature/junga-initial-setting 으로 변경해주세요!
### main 에서 작업하시면 안됩니다!
git checkout feature/junga-initial-setting
git add .
git commit -m "project initial setting"
git push origin feature/junga-initial-stting
compare 부분에 본인이 push 한 브랜치를 설정해주세요
Create pull request 를 통해 PR 을 생성해주세요.
예: base: main ← compare:feature/suntae
PR 템플릿의 제목은 아래와 같이 작성해주세요.
[이정아] Mission 1: Django 초기 세팅