로그인&회원가입 정도만 지원하는 초미니 인스타그램을 구동할 수 있는 API 시스템을 만들어보자!
#가상환경 생성
$ conda create -n westagram python=3.9
$ conda activate westagram
#데이터베이스 생성
$ mysql -u root -p
$ create database westagram character set utf8mb4 collate utf8mb4_general_ci;
#패키지 설치
$ pip install django
$ pip install mysqlclient # Python과 MySQL 을 연결시켜줌
$ pip install PyMySQL # Python과 MySQL 을 연결시켜줌. mysqlclient가 안되는 경우 방지
$ pip install django-cors-headers #클라이언트와 서버가 다른 도메인과 포트를 사용해도 접근할 수 있게 함
#Django Project 생성
$ django-admin startproject westagram . # .을 붙여야 현재 디렉토리에 생성된다
#모든 IP를 Host로 허용
ALLOWED_HOSTS = ['*']
#사용하지 않는 기능 주석처리 & install한 corsheaders 추가
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'corsheaders',
]
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
# 'django.contrib.auth.middleware.AuthenticationMiddleware',
'corsheaders.middleware.CorsMiddleware',
#한국 기준으로 타임 존 변경
TIME_ZONE = 'Asia/Seoul'
USE_TZ = False
#my_settings.py에 따로 넣은 값 수정
from my_settings import DATABASES, SECRET_KEY
SECRET_KEY = SECRET_KEY
DATABASES = DATABASES
#공식 문서에 있는 CORS 기본 설정 추가. cors origin을 모두 허용한다.
CORS_ORIGIN_ALLOW_ALL=True #원하는 IP를 입력하면 해당 IP랑만 소통한다.
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_METHODS = ( #http 통신 메소드.
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
#슬래시(/) 관련 에러 제거
APPEND_SLASH = False
#apps.py
from django.urls import path
urlpatterns = {
}
#requirements.txt생성, 패키지 리스트를 txt 파일에 저장
$ pip freeze > requirements.txt
#my_settings.py
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'westagram', #db이름
'USER': 'root', #DB접속 계정명
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1', #localhost
'PORT': '3306', #mysql의 기본포트 3306
}
}
SECRET_KEY = '시크릿키' #settings.py에 있는 secret_key 복붙
#.gitignore에 gitignore.io 사이트에서 해당되는 것 추가 & my_settings.py도 추가
...
my_settings.py
$ python manage.py runserver
$ git init .
$ git add .
$ git commit -m "ADD: django 초기세팅"
$ git push origin main