본문 바로가기
Django

[Django] Django 초기 세팅

by 혀넝 2022. 3. 12.

1. Django Project 초기 세팅

  • 가상 환경 생성

프로젝트를 새로 생성하고 독립적인 패키지 관리를 위해서는 콘다를 이용해서 가상 환경을 만들어야 한다.
콘다가 설치되어 있다면 터미널 창에 아래의 내용을 작성하면 가상환경을 생성할 수 있다.

conda create -n 가상환경이름 python=3.8
conda activate 가상환경이름

가상 환경을 만든 후에 꼭 activate를 해야 가상 환경이 실행된다.
만약 가상환경을 나가고 싶다면 conda deactivate 명령어를 사용하면 된다.

 

  • database 생성

가상 환경 생성 후 사용하는 데이터베이스를 생성한다.

mysql> create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;

 

  • database project python package 설치
pip3 install django
pip3 install mysqlclient

mysql에서 만드는 데이터베이스와 django로 만드는 서버를 연결시키기 위해서는 mysqlclient가 필요하다. 

 

  • Django project 생성

프로젝트를 생성할 디렉토리로 이동하여 프로젝트를 생성한다.

django-admin startproject 프로젝트이름

프로젝트를 생성하면 프로젝트 이름의 디렉토리가 생기는데, 거기로 이동한다. 터미널에서 cd를 사용하면 된다.

cd 프로젝트이름

 

  • settings.py 설정

프로젝트를 생성하면 settings.py 파일이 생긴다. 해당 파일 안에서 아래와 같이 수정한다.

 

또한 urls.py 파일도 아래와 같이 수정한다.

 

  • my_settings.py 생성 (manage.py 파일이 있는 곳에 생성)

settings.py 파일을 보면 SECRET_KEY와 DATABASES와 같은 중요한 정보들이 들어있다. 해당 정보는 Github에 올리면 안 되는 내용이라 별도의 파일 혹은 환경변수로 관리하는 게 좋다. 그래서 my_settings.py라는 새로운 파일을 만든다.
파일은 직접 vscode 등에서 만들어도 되고 터미널에서 만들어도 된다. 터미널에서 만드는 경우 아래의 명령어를 사용하면 된다.

touch my_settings.py

해당 파일의 내용은 아래와 같다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

SECRET_KEY = #settings.py에 있는 secret_key

 

  • settings.py과 my_settings.py 연동

my_settings.py의 내용을 정리한 후에 해당 파일을 settings.py와 연동시켜야 한다. settings.py로 가서 아래의 내용을 추가한다.

from pathlib import Path
from my_settings import DATABASES, SECRET_KEY

...

DATABASES = DATABASES

SECRET_KEY = SECRET_KEY

settings.py 파일을 보면 DATABASES와 SECRET_KEY를 변수로 가지는 코드가 있는데, 원래 값은 지우고 위와 같이 쓰면 된다.

 

  • M1 mysql setting

맥북 M1을 사용하는 경우에는 PyMySQL을 추가로 설치한다. mysqlclient와 마찬가지로 mysql과 django를 연결하기 위해서 필요한 패키지이다. 하지만 M1칩을 사용하는 맥북은 PyMySQL이 있어야 연결 할 수 있다.

pip3 install PyMySQL

그 후 settings.py로 가서 아래의 내용을 추가한다.
내용을 추가했을 때 마치 오류가 난것처럼 밑줄이 나올 수도 있는데 이건 문제가 있는 건 아니라서 넘어가도 된다.

import pymysql

pymysql.install_as_MySQLdb()

 

  • corsheaders 설치
pip3 install django-cors-headers

corsheaders 설치 후 settings.py에서 INSTALLED_APPS와 MIDDLEWARE 안에 아래의 내용을 추가한다.

INSTALLED_APPS = [

...
    'corsheaders'
]


MIDDLEWARE = [

...
'corsheaders.middleware.CorsMiddleware',
...
]

그 후 똑같이 settings.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',
)

마지막으로 아래의 내용을 추가해서 /관련 에러를 제거한다. 이 내용도 settings.py에 추가하면 된다.

APPEND_SLASH = False

 

  • 서버 실행

모든 과정을 완료한 후에 서버를 작동시켜보면 오류가 있는지 없는지 알 수 있다.

python3 manage.py runserver

서버가 제대로 작동하지 않으면 에러가 발생하는데, 에러 내용을 잘 보고 코드를 고치면 다시 서버가 잘 작동한다.
또한 빨간색 글씨로 migration에 대한 내용일 써있을 수도 있는데 지금은 무시해도 된다.

 

2. Git & Github

  • git 초기화

초기 세팅이 끝난 프로젝트를 git으로 관리할 수 있도록 git 초기화를 한다.
프로젝트 디렉토리 안에 보면 manage.py 파일이 있는데, 해당 파일이 있는 곳에서 초기화를 진행해야 한다. .git 폴더 밑에 있는 폴더들이 tracking 되기 때문에, 만약 desktop에서 초기화를 하면 desktop에 있는 모든 내용이 github에 올라가게 되므로 조심해야 한다.
git 초기화는 아래의 명령어로 할 수 있다.

git init

 

  • .gitignore 생성

초기 세팅을 하면서 언급했던 것처럼, SECRET_KEY와 DATABASES는 올려서는 안 되는 파일이다. 또한 git이 tracking 하고 있는 위치에서 올리고 싶지 않은 파일 등이 있을 수도 있다. 이를 구분하기 위해서 git이 tracking하고 있는 디렉토리의 위치에서 .gitignore 파일을 만들어 관리한다.
gitignore.io 사이트에 들어가면 자동으로 .gitignore에 적을 내용들을 생성해준다. 해당 사이트에서 생성된 내용을 파일에 적으면 된다.

touch .gitignore
vi .gitignore

git에서 touch는 파일을 만들 때 사용하는 명령이다.
vi를 사용하면 파일에 들어가서 파일 내용을 수정할 수 있다. 
vi에 들어가서 "i"를 누르면 insert모드가 되고, gitignore.io에서 가져온 내용을 붙여 넣기 하면 된다. 그리고 마지막 줄에 my_settings.py를 추가한다.
내용 추가가 끝났으면 esc를 누르고 :wq를 적으면 자동으로 저장되고 파일을 나갈 수 있다.

터미널 창에서 ls -al을 하면 해당 디렉토리의 파일들의 리스트를 보여주는데, .이 붙은 숨김 파일들도 보여준다.
git status를 하면 상태 확인이 가능하다. 두 과정을 해 보면, ls -al을 하면 my_settings.py 파일까지 보이지만, git status를 하면 해당 파일이 보이지 않는 것을 알 수 있다.

ls -al
git status

 

  • add & commit
git add .
git commit -m "커밋내용"

 

  • git & github 연결

커밋한 내용을 github에 연결하기 위해서 먼저 github에서 repository를 생성한다. 
생성 후에 보이는 주소를 복사해서 터미널에서 아래의 내용을 적으면 github에 지금까지의 내용이 올라가게 된다.

git remote add origin 주소

# github에 올리기
git push origin master

 

3. Branch & Application 생성

  • Branch 생성
git branch 브랜치이름 # 브랜치 생성
git checkout 브랜치이름 # 해당 브랜치로 이동

# 브랜치 생성 및 이동
git checkout -b 브랜치이름

브랜치를 생성하기 위해서는 위의 코드를 사용하면 된다. 생성과 이동을 동시에 할 경우에는 git checkout -b 명령어를 사용하면 된다.

 

  • Application 생성

프로젝트에서 앱을 생성할 때는 아래의 명령어를 사용하면 된다.

python3 manage.py startapp 앱이름

앱을 생성한 후에는 settings.py 파일로 가서 INSTALLED_APPS에 해당 앱의 이름을 추가해준다.

INSTALLED_APPS = [
...
    '앱이름', 
]

 

  • github push

변경 사항이 생겼으니 다시 git add와 commit을 하면 된다.

git add .
git commit -m "커밋내용"

그 후 branch를 push 하면 된다.

git push origin 브랜치이름