오늘도 개발

Django 프로젝트 세팅하는 법 본문

웹 프로그래밍/Django

Django 프로젝트 세팅하는 법

Sueeeeeee 2022. 7. 17. 14:17

위코드 foundation westagram kickoff 자료를 참고하여

Django 프로젝트를 세팅하는 방법을 정리해보았다.

1. 가상환경 생성

미니콘다는 가상환경을 만들어서 각 프로젝트별로 필요한 패키지를 각기 관리할 수 있게 해주는 시스템이다.

 

미니콘다 설치 후 가상환경 생성

conda create -n westagram python=3.9

가상환경 활성화

conda activate westagram

 

2.  Database 생성

mysql 접속

mysql -u root -p

database 생성

mysql> CREATE DATABASE westagram CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

 

3.  패키지 설치 (django, mysqlclient, django-cors-headers)

장고 설치

# 원하는 가상환경에 있는지 꼭 확인하고 설치 
pip install django

mysql 설치(mysql 서버에 접속할 수 있게 해주는 패키지)

# mysql 설치되어있는지 확인하고 설치
pip install mysqlclient

django-cors-headers 설치

pip install django-cors-headers

pymysql 설치

pip install PyMySQL

 

4. 프로젝트 생성

django-admin startproject westagram

 

5. git 설정

manage.py가 있는 위치에서 다음 실행

git init

 

6. git에서 초기 세팅 브랜치 생성

브랜치 생성 후 이동. 이후 프로젝트 초기 세팅은 feature/initial-setting 브랜치에서 진행.

git checkout -b feature/initial-setting

 

7.  프로젝트 초기 세팅

<my_settings.py>

manage.py와 같은 위치에 생성한다.

공개하면 안되는 내용(시크릿 키, 데이터베이스 관련 정보, jwt 시크릿과 알고리즘 등)을 담아두는 파일이다.

시크릿키를 사용해야 할 때 my_settings 모듈을 임포트하여 사용하면 된다.

DATABASES = {
    'default' : {
        'ENGINE'  : 'django.db.backends.mysql',
        'NAME'    : '앱 이름',
        'USER'    : '유저',
        'PASSWORD': '데이터베이스 비번',
        'HOST'    : 'ip 주소',
        'PORT'    : '포트명',
        'OPTIONS' : {'charset': 'utf8mb4'}
    }
}
        
SECRET_KEY = 'settings.py에 들어있는 장고 시크릿 키'

 

<.gitignore>

github에 my_settings.py가 올라가지 않도록 .gitignore 파일에 추가해야 한다.

(.gitignore 파일에 들어있는 파일은 git이 트래킹하지 않는다.)

 

github에 올라갈 필요가 없는 파일도 추가해준다.

gitignore.io에서 python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh 등 키워드를 검색해서 나온 결과를

복사해서 붙여넣으면 된다.

my_settings.py

 

<settings.py>

장고가 자동 생성해준 settings.py에서 다음 부분을 수정하거나 추가한다.

DATABASES와 SECRET_KEY는 반드시 삭제하고

my_settings.py를 임포트하여 가져온 변수로 지정해준다. 

# 1. pymysql 임포트
import pymysql

# 2. my_settings 임포트
from my_settings import DATABASES, SECRET_KEY

# 3. secret 키는 공개되면 안되므로 my_settings.py에 작성하고 임포트
SECRET_KEY = SECRET_KEY

# 4. 연습용 프로젝트이므로 모든 포트 허용
ALLOWED_HOSTS = ['*']

# 5. admin, csrf, auth는 사용하지 않을 예정이므로 주석 처리
# 6. 주석처리 후 urls.py에서 admin 관련 코드 모두 삭제
# 7. corsheaders 앱 추가
INSTALLED_APPS = [
#   'django.contrib.admin',
#   'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
]

# 7. csrf, auth 주석 처리
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',
]

# 8. database도 공개되면 안되므로 my_settings.py에 작성하고 임포트
DATABASES = DATABASES

# 9. 한국시간으로 맞추기
TIME_ZONE = 'Asia/Seoul'
# 10. DB에도 한국시간 반영
USE_TZ = False

# 11. 슬래쉬 관련 에러 메시지 안 나오게 설정
APPEND_SLASH = False

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

# 13. pymysql 설정
pymysql.install_as_MySQLdb()

# 14.log 설정(모든 sql 쿼리 보여줌)
LOGGING = {
    'disable_existing_loggers': False,
    'version': 1,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
    },
}

 

<requirements.txt>

manage.py와 같은 위치에 생성한다.

이 프로젝트에 어떤 패키지의 무슨 버전이 사용되었는지 알려주는 파일이다.

협업 시 작업자들이 동일한 개발환경을 구축할 수 있게 해준다.

 

아래 명령어로 나온 패키지 목록 중,

pip freeze

Django, django-cors-headers, mysqlclient, PyMySQL 항목을 복사해서 붙여넣는다.

Django==3.2.4
django-cors-headers==3.7.0
mysqlclient==2.0.3
    
# m1의 경우 아래 패키지도 추가
PyMySQL==1.0.2

 

8.  세팅 잘 되었는지 확인

초기 프로젝트 구조

출처 - 위코드 foundation 1 Westagram Kickoff

 

manage.py가 있는 위치에서 서버 켜보기

python manage.py runserver

 

'웹 프로그래밍 > Django' 카테고리의 다른 글

Django로 Unit Test해보기  (0) 2022.08.05
Django 앱 세팅하는 법  (0) 2022.07.17
내 컴퓨터로 runserver 하기  (0) 2022.07.13
정참조, 역참조, related_name  (0) 2022.07.06
ManyToManyField VS ForeignKey  (0) 2022.07.05