web/django

Django 프로젝트 세팅하기

민사민서 2024. 5. 7. 01:12

STEP1. 독립적인 파이썬 실행 환경 (=가상환경) 구축

- pip 패키지 매니저로 설치한 패키지는 전역으로 설치

- 프로젝트가 여러개일 경우 문제가 생길 수 있음. (서로 다른 프로젝트가 호환이 안 되는 다른 버전의 패키지 사용 등등)

- 각 프로젝트 별로 독립된 개발 환경을 제공하여 이런 문제 방지

- venv, virtualenv, pipenv, conda 등의 모듈을 사용할 수 있음

 

파이썬에 내장된 venv를 이용해 가상환경을 만들어보자

# 가상 환경 생성
python -m venv .venv

# Windows에서 터미널이 cmd라면
.venv\Scripts\activate.bat
# Windows에서 터미널이 git bash라면
source .venv/Scripts/activate

이렇게 (.venv)가 앞에 나타나면 가상환경이 제대로 활성화 된 것이다.

shell 닫으면 자연스레 가상환경 탈출, 재진입하려면 .venv 디렉터리 아래에 있는 activate.bat 또 실행시키면 됨

 

pip freeze > requirements.txt

 

현재 파이썬 가상 환경에 설치된 패키지들과 그 버전정보를 저장해둠

=> 다른 가상 환경에서 pip install -r requirements.txt 명령어를 통해 동일한 환경을 구축할 수 있게

 

STEP2. 장고 프레임워크 설치 및 프로젝트 생성

pip install Django
django-admin startproject seminar .

 

장고를 설치하고,

새로운 Django 프로젝트를 . (현재 디렉터리)에 생성한다

 

pip install django-environ djangorestframework

 

환경변수를 사용해 Django 설정 관리할 수 있게 해주는 django-environ 유틸리티 설치

Django 프레임워크 확장하여 RESTful API 구축하기 위한 도구인 djangorestframework 설치

 

STEP3. .env 파일 생성 및 .gitignore 설정

최상단 디렉토리에 .env 파일.gitignore 파일을 생성함

 

보안을 위해 seminar/settings.py 파일 안의 SECRET_KEY를 .env 파일로 옮김

 

settings.py 파일에서 SECRET_KEY 를 .env 파일에서 가져오도록 코드를 수정함

from pathlib import Path
import os, environ

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
env = environ.Env(
  DEBUG=(bool, True)
)
environ.Env.read_env(
  env_file=os.path.join(BASE_DIR, '.env')
)

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY')

 

git으로 관리하지 않을 파일(당연히 .env 포함)을 .gitignore에 명시해준다. 

https://www.toptal.com/developers/gitignore/api/django <= 옆 사이트의 내용을 복사하면 됨

 

STEP4. 로컬에서 API 테스트하기 위한 조건 설정

ALLOWED_HOSTS = ['localhost', '127.0.0.1']
,,,
REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES' : (
        'rest_framework.permissions.AllowAny',
    )
}

 

허용 호스트에 localhost 를 추가함

Django REST Framework에서 API에 대한 기본 권한을 "모든 요청 허용"으로 세팅함으로써 POST, GET 등의 요청 시 로그인되지 않은 유저도 테스트 가능함

"콤마" 주의해야 함 // 파이썬 문법, 단일 요소 튜플 만들 시 콤마 추가 필요...

 

cf) 깃헙에 올린 django project를 클론받아와서 사용할때는

- python -m venv .venv 로 venv 활성화

- .venv\Scripts\activate.bat 로 가상환경 진입

- pip install -r requirements.txt 로 설치환경 복원

- .env 파일 어디서 구하거나 해서 복사해옴

- python manage.py makemigrations / python manage.py migrate 해서 db migration 진행

- python manage.py runserver 하면 이제 됨~~