$ 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
$ pip install mysqlclient
$ pip install django-cors-headers
git branch feature/wonsuk-initial-setting
# 생성
git checkout feature/wonsuk-initial-setting
# 이동
$ django-admin startproject westagram
$ cd westagram
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.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 생성 >
이전 포스트에서 알아본 .gitignore를 생성 후 저장한다!
< 프로젝트 서버 실행 >
- 최종적인 초기 프로젝트 구조
├── .gitignore # 숨김설정 되어 있습니다.
├── manage.py
├── my_settings.py
├── requirements.txt
└── westagram
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
서버 동작(Runserver)을 통한 오류 검증
$ python manage.py runserver # manage.py 위치에서 작성