[Django] Project 초기 세팅 (M1)

Minjeong Bak·2021년 10월 14일
1

PYTHON/Django

목록 보기
10/14
post-thumbnail

miniconda 가상환경 생성

conda create -n "가상환경 이름" python=3.9
#3.9이상 버전 사용해야 asgi.py 파일 생성됨.

conda activate "가상환경 이름"
# 가상환경 실행

conda deactivate
# 가상환경 종료

conda env list
# 가상환경 목록

conda env remove -n "가상환경 이름"
# 가상환경 삭제

Django 설치

pip install django

mysql setting

pip install PyMySQL

pip freeze
# 설치 확인

Database 생성

mysql.server start
brew services start mysql
# 서버 켜놓기

mysql -u root -p
# mysql 서버에 명령어를 보내겠다고 하는 클라이언트 명령문
# -u : mysql에 어떤 유저로 접속할 것인지
# root : root 계정으로 접속하겠다는 것, 회사에서는 root사용이 아닌 권한에 맞는 유저 제공 
# -p : password를 입력하겠다는 것

mysql> create database NAME character set utf8mb4 collate utf8mb4_general_ci;
# character set utf8mb4 : database에 특수문자까지 저장할 수 있게 도와주는 옵션, 이모티콘 등 저장가능
# collate : database에서 검색을 할 때 기준을 무엇으로 잡을 것인지

mysql> show databases;
# database 확인

mysql> use NAME
# 해당 database를 사용

mysql> drop database NAME;
# 등록된 database 삭제

Django Project 생성

# 프로젝트 폴더를 만들 경로로 이동

django-admin startproject "프로젝트 이름"
cd "프로젝트 이름"

Settings.py 설정

django로 서버를 실행시키거나 명령을 실행하게 하는 설정파일

BASE_DIR = Path(__file__).resolve().parent.parent

# 장고 프로젝트에서 어디를 절대경로로 둘 것인지, 보통은 manage.py
# 현재 위치의 부모의 부모 디렉토리를 절대경로라고 보는 것(manage.py 디렉토리가 있는 경로)

DEBUG = True

# True: 개발할 때 났던 error들이 터미널 창에 출력됨
# False: 배포할 때 설정, True일 경우 error난 것들을 터미널에 출력하느라 속도가 느려짐

ALLOWED_HOSTS = ['*']

# 어떤 요청을 받을 것인지
# * 설정, 어떤 서버의 요청이라도 허락을 하겠다는 뜻

INSTALLED_APPS = [
    #'django.contrib.admin',
    #'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# 장고가 제공해주는 adimin 기능 사용하지 않음

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',
]

# 장고 admin기능을 사용했을 때 인증하는 미들웨어 설정 사용 X

urls.py 수정

  • 변경 전

  • 변경 후

from django.urls import path

urlpatterns = [
]

#

my_settings.py 생성

  • 장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아니기때문에 별도의 파일 혹은 환경변수로서 관리하는게 좋다.
  • settings.py에 바로 저장되는 방식은 지양해야 한다.
  • 별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행한다.
cd '생성한 프로젝트 폴더명'
touch my_settings.py

파일 내용

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 ↔ my_settings.py 연동

from pathlib        import Path #기존에 settings.py 에 있는 코드
from my_settings    import DATABASES, SECRET_KEY

...

DATABASES = DATABASES

SECRET_KEY = SECRET_KEY

settings.py에 수정

PyMySQL settings.py 설정

from pathlib        import Path #기존에 settings.py 에 있는 코드
from my_settings.py import DATABASES, SECRET_KEY

import pymysql

pymysql.install_as_MySQLdb()

corsheaders

설치

pip install django-cors-headers

settings.py에 추가

INSTALLED_APPS = [
...
		'corsheaders'
]

MIDDLEWARE = [
	...
		'corsheaders.middleware.CorsMiddleware',
	...
]

##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
  • 정상동작

0개의 댓글