Django REST Framework를 활용한 회원가입 로그인 API를 구현하고자 한다.
우선 첫 번째로는 프로젝트 생성 및 DB 연결과 같은 기본 세팅을 진행하고자 한다.
1. 프로젝트 생성 및 env 파일 생성
1) 가상환경 생성 (venv, virtualenv)
가상환경은 왜 필요할까?
가상환경에서 설치된 외부 라이브러리들은 별도의 개발 환경에서 동작하는 것으로 다른 파이썬 프로그램에 영향을 주지 않을 수 있다.
외부 라이브러리들은 의존성을 지닌 경우가 많은데 이로 인해 버전 등으로 인해 충돌이 일어날 수 있다.
이에 파이썬 라이브러리들이 독립된 가상환경을 통해 충돌을 일으키는 것을 방지하기 위해 가상환경을 사용한다.
작업할 폴더를 설치한 뒤, VSCode에서 열어준다.
그 후 터미널을 열고(Ctrl + `) 아래 코드를 입력하여 가상환경을 생성한다. (myvenv는 가상환경 폴더명이므로 변경해도 무관하다)
python -m venv myvenv
Mac의 경우 오류가 날 수 있는데 그럴 때는
python3 -m venv myvenv
이렇게 작성해주면 된다.
설치 후에는 가상환경을 켜주면 된다.
source myvenv/Scripts/activate #Windows
source myvenv/bin/activate #Mac
2) Django, DRF 설치
프로젝트를 위해 필요한 Django와 DRF의 패키지를 설치한다.
설치는 아래 코드를 터미널에 입력하여 가능하다.
pip install django
pip install djangorestframework
pip
파이썬으로 작성된 패키지 소프트웨어를 설치 및 관리하는 패키지 관리 시스템이다. (cf. javascript - npm)
3) 프로젝트 및 앱 생성
프로젝트이름 부분에는 본인의 프로젝트명으로 바꾸어 넣는다.
django-admin startproject 프로젝트이름
프로젝트를 생성하면 동일한 이름으로 이중폴더가 생성되는데 가장 바깥쪽(상위) 폴더의 이름을 변경하는 것을 추천한다. (settings.py, __init__ 있는 폴더 건들면 안 됨) 프로젝트 이름과 헷갈릴 가능성을 줄일 수 있다.
cd 프로젝트상위폴더
기존 작업하던 위치에서 프로젝트상위폴더(myvenv와 같은 위치에 있는)로 이동한 뒤 이제 본격적으로 앱을 생성할 수 있다.
python manage.py startapp 앱이름
앱까지 생성을 했으면 이제 Django가 잘 실행되는지 확인해보자.
python manage.py runserver
터미널에 위 코드를 입력한 후 실행하면 아래와 같이 실행됐음이 확인된다.
localhost:8000 또는 http://127.0.0.1:8000/ 으로 접속하여 로켓이 잘 날고 있는지 확인해보자. 아래 창을 만났다면 프로젝트 생성 성공이다.
프로젝트 vs 앱
앱: 블로그 시스템, 공개 기록 데이터베이스 또는 소규모 의견조사 앱과 같은 작업을 수행하는 웹 애플리케이션
프로젝트: 특정 웹 사이트에 대한 구성 및 앱의 모음
한 프로젝트에 여러 개의 앱이 포함될 수 있으며 앱은 여러 프로젝트에 있을 수 있다.
2. MySQL 연결
1) Database 생성
MySQL을 실행하고
create database 데이터베이스이름 character set utf8mb4 collate utf8mb4_general_ci;
를 통해 Database를 생성해주면 Django과 MySQL 연결을 위한 준비는 끝이다.
2) env 파일 생성
SECRET_KEY와 API KEY, 비밀번호 등 외부에 노출되어서는 안 되는 정보들을 담고 있는 파일을 생성한다.
환경변수 관리를 돕는 django-environ 패키지로 관리를 해보고자 한다.
pip install django-environ
설치된 후 프로젝트 폴더 아래(settings.py와 같은 위치)에 .env 파일을 생성한다.
그리고 .env 파일 내에 아래 코드를 작성한다.
SECRET_KEY=시크릿키
DATABASE_URL=mysql://root:비밀번호@localhost:3306/데이터베이스이름
시크릿키에는 settings.py 파일의 SECRET_KEY = '시크릿키' 부분을 찾아 시크릿키를 넣어주면 되고,
DB에는 root 비밀번호와 사용할 DB 이름을 넣어주면 된다.
3) setting.py 수정
settings.py를 수정하여 env 파일의 내용을 가져올 수 있도록 한다.
# env 환경설정 (새롭게 추가)
import environ
env = environ.Env(
DEBUG=(bool, True)
)
environ.Env.read_env()
# 기존 코드 수정
SECRET_KEY = env("SECRET_KEY")
DATABASES = {
'default': env.db()
}
4) migration
Django에서는 기본적으로 Group, User, Admin과 같은 테이블을 제공한다.
Django는 ORM을 사용하기 때문에 models.py와 클래스로 DB를 관리하는데 이러한 모델의 변경 내역을 DB 스키마에 적용시키는 방법이 바로 'migration'이다.
migration을 위해선 두 가지 과정이 필수적으로 이루어져야 하는데 세트처럼 외워두는 것이 좋다.
1. python manage.py makemigrations
- 마이그레이션을 생성한다. 뒤에 앱 이름을 붙여 특정 앱에 대해서만 실행하도록 지정할 수 있다.
2. python manage.py migrate
- migration을 적용한다. 실제 DB에 변경사항을 적용하는 과정이다.
python manage.py makemigrations
python manage.py migrate
를 터미널에 실행한 후 MySQL에서 DB를 확인해보면
이렇게 제공되는 테이블들이 DB 안에 적용된 것을 확인할 수 있다.
'Framework > Django' 카테고리의 다른 글
[Django] Django REST Framework JWT Import Error 해결 방법 (0) | 2022.03.27 |
---|---|
[Django] 마이그레이션 오류 해결하기: django.db.migrations.exceptions.InconsistentMigrationHistory (0) | 2022.03.27 |
Django 배포 과정 오류 해결 과정 (Heroku, pythonAnywhere) (0) | 2021.08.11 |