장고를 능숙히 사용하기 위해서 장고를 가지고 westargram를 만들어서 backend api시스템을 만들어보도록 하겠습니다! 먼저 오늘은 장고 초기셋팅을 진행하도록 하겠습니다!
conda create -n westagram python=3.8
westargram이라는 가상환경을 생성해줍니다.
conda env list #가상환경 목록 conda activate westargram #가상환경 활성화
가상환경 목록 확인시 westargram이 있다면 가상환경이 잘 생성 된 것 입니다.
activivate하여 가상환경을 잘 활성화 시키면 됩니다!
저는 데이터베이스를 mysql를 사용하여 진행하도록 하겠습니다.
westargram이라는 데이터베이스를 생성하겠습니다.
mysql> Create DATABASE westargram CHARACTER set utf8mb4 COLLATE utf8mb4_gemeral_ci;
가상환경과 데이터베이스를 생성했으니 가상환경속에 장고를 설치해주도록 하겠습니다.
pip install django pip install pymysql #mysqlserver에 접속용
이제 장고프로젝트를 생성 해볼까요?
django-admin startproject westargram
여기서부터는 번호를 매겨가면서 헷갈리지 않도록 합니다.
(1) 이제 setting.py 에 들어가서 초기 설정을 진행해 볼까요??
allowed_hosts 모두 열어주고 사용하지않는 앱들인 admin과 auth를 주석처리해주고
미들웨어역시 마찬가지로 사용하지않는 것들을 주석처리 해주도록 하겠습니다.
(2) westargram/urls.py 설정
urls.py 를 초기설정을 해줍니다.
from django.urls import path urlpatterns =[ ]
(3)my_settings.py 설정
my_settings.py를 만드는 이유는 setting.py에 있는 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용들을 숨겨주기 위해서 입니다.
DATABASES = { 'default' : { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DATABASE 명', 'USER': 'DB접속 계정명', 'PASSWORD': 'DB접속용 비밀번호', 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'} } } SECRET_KEY = '시크릿키' #settings.py에 있는 secret_key 를 사용합니다.
settings.py 설정
from my_settings import DATABASES, SECRET_KEY
DATABASES = DATABASES SECRET_KEY = SECRET_KEY
(4) corsheaders
pip install corsheaders
settings.py에 INSTALLED_APPS 안에 추가해줘야합니다.
INSTALLED_APPS = [
'corsheaders'
]
미들웨어도 추가해주고
(5)corsheader에 관한 값들도 settings.py에 적어줍니다.
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',
)
my_manage.py가 있는 자리에서
python manage.py runserver
를 해줍니다
프로젝트 실행시
라고 나오면 무사히 초기 셋팅을 마치고 정상적으로 서버를 실행 한 것입니다.!