TIL72. WetchaPedia Project : Django Project 초기 세팅

ID짱재·2021년 11월 6일
0

WeChaCha Project

목록 보기
1/8
post-thumbnail

📌 이 포스팅에서는 WetchaPedia 팀 프로젝트 과정에 앞서 초기 세팅 과정에 대해 정리하였습니다.



🌈 Django Project 초기 세팅


1. Django 초기 세팅

🤔 가상환경 생성 및 초기 세팅

✔️ 프로젝트를 위해 project_env라는 이름의 가상환경을 python 3.8버전으로 생성하였다. 이후 가상환경으로 진입한다.

$ conda create -n [가상환경 이름] python=3.8 👈 가상환경 생성

$ conda activate [가상환경 이름] 👈 가상환경 활성화

✔️ 가상환경 내에서 Django를 설치하고, config란 이름으로 프로젝트를 만들어준다. 디렉토리를 추가적으로 감싸기 싫기 때문에 끝에 점(.)을 붙인다.

$ pip install django 👈 django 최신 버전 설치

$ django-admin startproject config . 👈 django 프로젝트 생성

🤔 데이터베이스 생성

✔️ 데이터베이스 생성 전, myqlclient와 PyMySQL를 설치한다. PyMySQL은 m1을 위한 배려다.

$ pip install mysqlclient 👈 mysqlclient 최신 버전 설치

$ pip install PyMySQL 👈 PyMySQL 최신 버전 설치

✔️ MySQL에 진입해 wetchapedia란 이름의 DB를 생성한다.

$ mysql -u root -p 👈 mysql 진입

mysql> create database [DB 이름] character set utf8mb4 collate utf8mb4_general_ci; 👈 DB 생성

🤔 Django setting

✔️ 데이터베이스와 시크릿키를 은폐시키기 위해 my_settgins.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 = [SECRET_KEY]

✔️ my_settings의 정보를 import하고,SECRET_KEY와 DATABASES를 연결시킨다. M1을 위해 설치한 PyMYSQL을 추가한다.

from my_settings import SECRET_KEY, DATABASES
import pymysql
pymysql.install_as_MySQLdb()
SECRET_KEY = SECRET_KEY
DATABASES = DATABASES

✔️ 서버에 접근하는 IP 허용를 모두 허용시킨다.

ALLOWED_HOSTS = ['`*`'] 👈 IP 전부 허용

✔️ corsheaders를 설치해준다.

$ pip install django-cors-headers 👈 corsheaders

✔️ Application & MiddleWare를 설정해준다. Admin, CSRF, Auth는 주석하고, corsheaders를 추가한다.

DJANGO_APPS = [
    # 'django.contrib.admin', # 👈 admin 기능 주석
    # 'django.contrib.auth', # 👈 auth 기능 주석
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
]
PROJECT_APPS = []
THIRD_PARTY_APPS = [
    "corsheaders",  # 👈 corsheaders 앱 등록
]
INSTALLED_APPS = DJANGO_APPS + PROJECT_APPS + THIRD_PARTY_APPS
MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    # 'django.middleware.csrf.CsrfViewMiddleware', # 👈 csrf 기능 주석
    # 'django.contrib.auth.middleware.AuthenticationMiddleware', # 👈 authentication 기능 주석
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    "corsheaders.middleware.CorsMiddleware", # 👈 corsheaderMiddleWare 등록
]

✔️ settgins.py 최하단 부의 CORS 관련 설정을 추가시킨다.

##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',
)

🤔 .gitignore

✔️ manage.py와 같은 계층에 .gitignore 파일을 생성한 뒤, python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh 등 기본적으로 필요한 내용을 "https://www.toptal.com/developers/gitignore" 에서 생성하여 붙여 넣는다.

✔️ 추가로 SECRET_KEY와 DATABASE 정보를 분리시켜 둔 python 파일을 .gitignore에 추가한다. formatter 때문에 .vscode와 toml 파일을 추가했다.

## my_settings.py
my_settings.py
## .vscode
.vscode/
## convention control
pyproject.toml

🤔 requirements.txt

✔️ project 환경을 위해 설치한 프로그램들은 requirements.txt에 담아야한다. 단, 설치 시 자동으로 설치되는 프로그램들은 별도로 명시할 필요없다.

$ pip freeze > requirements.txt

✔️ 위 처럼 명령할 경우, 모든 프로그램이 파일에 담기기 때문에 불필요한 파일명들은 지워준다.

Django==3.2.8
django-cors-headers==3.10.0
mysqlclient==2.0.3
PyMySQL==1.0.2

✔️ 현재까지지 기본 초기 세팅에 문제가 없는지 중간 점검 한다.

$ python manage.py runserver 👈 서버 구동



profile
Keep Going, Keep Coding!

0개의 댓글