[Django] 프로젝트는 초기 셋팅이 가장 중요한거 알지?

지원석·2021년 12월 19일
0

Project "westagram"

목록 보기
1/3

Django 프로젝트 초기 셋팅 가이드!

가상환경

1. 가상환경 생성 후 활성화

$ conda create -n westagram python=3.8
# 생성
$ conda activate westagram
# 활성화

프로젝트 초기설정

1. Database 생성

mysql>> CREATE DATABASE westagram CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2. 프로젝트 초기 셋팅

  • 프로젝트 repository 클론
git  clone 'github 주소'
  • 프로젝트 python package 설치
$ pip install django
$ pip install mysqlclient
$ pip install django-cors-headers

3. Django 프로젝트 설정

  1. branch 생성 & 이동
  • 브랜치 생성은 feature/이름-기능 으로 구분합니다.
    git branch feature/wonsuk-initial-setting
    # 생성
    git checkout feature/wonsuk-initial-setting
    # 이동
  • 개인 프로젝트 코드는 각자의 디렉토리로 관리하게 됩니다.
  • 브랜치 생성 후, 해당하는 feature 브랜치로 이동해서, 각자의 디렉토리 생성, django project 를 실행하게 됩니다.
  • students 디렉토리 안에 본인의 이름으로 새로운 디렉토리를 생성해주세요.
  1. Django Project 생성 후 이동
$ django-admin startproject westagram
$ cd westagram
  1. 초기 개발환경 설정
    < settings.py 설정 >
  • IP 허용
ALLOWED_HOSTS = ['*']
  • 주석처리 (admin, csrf, auth)
    INSTALLED_APPS = [
    #    'django.contrib.admin',
    #    'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages'
        'django.contrib.staticfiles',
    ]
    
    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',
    ]
  • (중요) 추가로 westagram/urls.py를 아래와 같이 수정해주세요.
    from django.urls import path
    
    urlpatterns = [
    ]

< my_settings.py 생성 >

! manage.py와 같은 위치에 생성 !

장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다. 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
settings.py에 바로 저장되는 방식은 지양해야 합니다.

별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행!
파일에 실제 쓰여지는 내용은 아래와 같다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'westagram',    # 데이터베이스명
        'USER': 'root',		# db접속 계정명
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
				'OPTIONS': {'charset': 'utf8mb4'}
    }
}

SECRET_KEY = '시크릿키' #settings.py에 있는 secret_key 를 사용합니다.

< settings.py ↔ my_settings.py 연동 >

  #settings.py를 수정합니다.
  
  from pathlib        import Path #기존에 settings.py 에 있는 코드
  from my_settings.py import DATABASES, SECRET_KEY
  
  ...
  
  DATABASES = DATABASES
  
  SECRET_KEY = SECRET_KEY

< corsheaders >

  • settings.py에 INSTALLED_APPS 안에 추가해줘야합니다.
  • middleware도 추가해야합니다.
INSTALLED_APPS = [
...
		'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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
  • 모든 내용은 settings.py안에 기록되야 합니다.

< requirements.txt 생성 >

  • 우리는 협업을 위해 github repository 를 사용합니다.
  • 협업에 가장 중요한 점은 동일한 개발환경을 구축해야 한다는 것입니다.
  • 즉 환경(사용자의 컴퓨터) 마다 사용하는 패키지를 동일하게 해야합니다.
  • manage.py 가 있는 위치에서 아래 커맨드를 작성해주세요.
$ pip freeze
  • 생성된 requirements.txt 를 확인해서 필수 패키지를 복사 붙여넣기 후, 저장해주세요.
touch requirements.txt
vi requirements.txt

Django==3.2.4
django-cors-headers==3.7.0
mysqlclient==2.0.3

# m1의 경우 아래 패키지도 추가해주세요.
PyMySQL==1.0.2

< .gitignore 생성 >
이전 포스트에서 알아본 .gitignore를 생성 후 저장한다!

< 프로젝트 서버 실행 >
- 최종적인 초기 프로젝트 구조

    ├── .gitignore # 숨김설정 되어 있습니다.
    ├── manage.py
    ├── my_settings.py
    ├── requirements.txt
    └── westagram
        ├── asgi.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

서버 동작(Runserver)을 통한 오류 검증

 $ python manage.py runserver # manage.py 위치에서 작성
  • 정상 동작 예시

0개의 댓글