Django 프로젝트 진행시 초기에 셋팅해 두어야 하는 부분들을 정리해봤다.
#가상환경 생성
conda create -n "가상환경 명" python=3.9
conda activate "가상환경 명"
$ mysql -u root -p
myslq> create database "데이터베이스 명" charater set utf8mb4 collate utf8mb4_general_ci;
참고) utf8mb4는 utf8에서 emoji문자가 입력되지 않는 문제점을 해결하기 위해 나온 것
$ pip install django
$ pip install mysqlclient
참고) macOS중에 mysqlclient로 입력시에 설치가 안되는 경우가 있다. 이러한 경우 mysql-client 이렇게 입력하면 설치가 가능하다.
$ django-admin startproject "프로젝트 명"
$ cd "프로젝트 명"
IP 허용
ALLOWED_HOSTS = ['*']
주석처리
INSTALLED_APPS = [
#'django.contrib.admin',
#'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders',
'products',
]
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',
]
urls.py 수정
from django.urls import path
urlpatterns = [
]
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
SECRET_KEY = '시크릿키'
를 입력해준다.
from my_settings import DATABASES, SECRET_KEY
...
DATABASES = DATABASES
SECRET_KEY = SECRET_KEY
CORS란 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청을 할 수있게 허용하는 구조이다.
pip install django-cors-headers
setting.py의 INSTALLD_APPS와 MIDDLEWARE에 아래 내용을 추가해준다.
INSTALLD_APP =[
...
'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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
마지막으로 서버를 동작해서 확인한다.
python manage.py runserver