[DRF/Django] DRF은 어떻게 시작할까?

조오닭·2023년 12월 12일
0

1. 가상 환경 진입

왜 가상 환경이 필요할까?
나도 궁금해서 찾아봤는데 독립하기 위해 이용한다고 한다. 즉, 프로젝트마다 요구하는 파이썬이나 DRF, Django, sql 버전이 다 다르고 이를 효율적으로 관리하기 위해 가상환경을 사용한다.
좀 더 나아가서 패키지 종속성을 확인할 수 있는 requirements.txt를 통해 알 수 있다면 팀원들과의 버전 충돌은 방지할 수 있을 것이다.
어쨌든 파이참에서는 프로젝트 생성할 때 virtual env를 지정할 수 있고, 터미널을 통해서도 진입할 수 있다.

1) 파이참으로 가상환경 설정

아주 간단하다. 'New environment using' 칸에 Virtualenv를 선택하자!

2) 터미널로 가상환경 설정

a. Virtual env 설치

pip install virtualenv

b. 가상 환경 생성

virtualenv venv

venv라는 이름의 가상환경을 만드는 것이다.

c. 가상환경 구동하기
Mac은 다음과 같고,

$ source venv/bin/activate

Windows는 다음과 같다. (오류 생길 수도 있음)

venv\Scripts\activate

3) 확인

다음 사진과 같이 맨 앞 괄호 사이에 가상환경 이름이 들어가면 성공적으로 된 것이다!

4) [참고] requirements.txt 담기

Django나 DRF나 여러 패키지를 설치하고 requirements.txt에 담는 것이다.
이 단계에서는 설치할 필요 없으나 그래도 혹시 몰라 기입하겠다.

a. 파일 생성하기

pip freeze > requirements.txt

b. requirements.txt 대로 버전 일괄 설치하기

pip install -r requirements.txt

프로젝트 긁어왔을 때 requirements.txt가 존재한다면 패키지들을 일괄 설치할 수 있다.

2. Django, DRF 설치

1) Django 설치 및 프로젝트 생성

pip install django
pip install djangorestframework

pip을 통해 장고와 drf를 설치한다.

2) 프로젝트와 app 생성

django-admin startproject firstProject .
python manage.py startapp firstApp

firstProject라는 이름의 장고 프로젝트를 생성하고, 그 프로젝트 안에 firstApp이라는 앱을 생성한다.
한 프로젝트 안에 여러 개의 app이 존재하며 기능 별로 app을 분리하는 것이라 생각하면 된다.

이렇게 생성된 첫 번째 app 디렉터리 안에 파일 여러 개가 생성되는데 다음과 같다.

firstApp/
   __init__.py
   admin.py
   apps.py
   migrations/
   models.py
   tests.py
   views.py

이후에 진행해보면 알겠지만, 장고는 도메인형 구조를 가지고 있다.
나는 스프링을 계층형 구조(service, controller, dto 등을 폴더로 해서 다 때려박음)로 했는데, 서비스마다 구분하는 도메인형 구조로 구조로 시작하니 매우 흥미로웠다. 개인취향 호호

3) settings.py에서 DRF와 app 등록

처음에 만들어둔 firstProject 안에 settings.py를 설정할 차례다.
상단에 위치한 INSTALLED_APPS에 필요한 패키지, 앱, api를 추가할 수 있다. 따라서 DRF와 우리가 만든 앱을 등록할 것이다.

INSTALLED_APPES = [
# 중략
'rest_framework',
'firstApp',
]

서비스가 커지면 추가할 패키지, 앱, api가 많아져서 마구잡이로 추가하면 관리하기 힘들어진다.
따라서 내가 보는 강의에선 api -> package -> app 순으로 나열해서 추가하였다.

그리고 여담인데, 추가할 때 마지막 항목에도 ,를 붙이는 걸 추천하는 듯!
(자세히는 잘 모르겠는데 ,을 안붙이면 에러 뜨는 것 같음)

3. 그리고... SQL 설정

settings.py의 중반부를 보면 알겠지만, 장고 프로젝트는 sqlite3이 기본적으로 설정되어있다.
하지만 나는 PostgreSQL을 사용할 예정이므로 파이썬과 Postgres를 연결해주는 psycopg2를 설치하고 해당 부분을 수정할 것이다. (Postgres 설정하는 방법은 다른 블로그에서 보세용)

1) psycopg2 설치

pip install psycopg2

2) settings.py 변경

# 기본적으로 설정되어 있는 sqlite3
# 변경 전
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
# 변경 후
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'project',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
    }
}

3) 데이터베이스 동기화

파이썬은 터미널에서 migrate를 해줘야 실제 DB와 동기화가 된다!

python manage.py migrate

여담으로 더 진행되면 앱 내에 model을 생성하거나 변경하는 일이 있을텐데, 이는 migrate 전에 makemigrations을 해줘야 한다.

python manage.py makemigrations firstApp

즉 정리하면,

makemigrations : app내의 model 파일에 변경이 생기면 이를 기록하는 역할
migrate : 실제 db에 적용하는 역할

하지만 지금은 model 파일 건들지도 않았으므로 할 일이 없음^^

...
이제 기본적인 세팅은 끝!

profile
백엔드 응애

0개의 댓글

관련 채용 정보