코딩한걸음
Published 2023. 4. 26. 16:51
[DRF] 프로젝트 세팅 Python/Django
728x90
반응형
💡
이 포스팅은 window, vscode 기준으로 작성되었습니다. 안보일 경우 우측하단의 버튼을 눌러 라이트모드로 바꿔주세요!

프로젝트 세팅

가상환경 만들고 패키지 설치하기

원하는 곳에 프로젝트 디렉토리를 만들고 그 디렉토리로 이동한다

새로운 프로젝트를 만들 때 습관처럼 만든다

## console
python -m venv venv

# 환경이 만들어진 후 가상환경 활성화
venv\Script\activate

# 활성화가 됬다면 한번 확인해보자
pip list

# 가상환경 비활성화는
deactivate

설치된 패키지가 2개만 있다면 정상 작동하는 것이다

django와 drf도 설치

## console
pip install django
pip install djangorestframework

이 프로젝트의 환경을 따로 저장해놓자

앞으로 프로젝트에 필요한 패키지를 인스톨하면 항상 습관처럼 해야한다

## console
pip freeze > requirements.txt

# requirements.txt로 관리하면 다른 컴퓨터에서 새로 가상환경을 만들어도 
# 다음 명령어로 프로젝트에 필요한 패키지들을 한번에 받을 수 있다
pip install -r requirements.txt

Github setting

프로젝트의 버전을 git으로 관리하는 습관을 갖자

Github에서 repository를 하나 만들고 연동

## console
echo "# drf_project_review" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/raoneli1013/drf_project_review.git
git push -u origin main

연동이 된 것을 확인하자

추가로 gitignore.io 에 접속해서 .gitignore를 생성

루트폴더에 .gitignore를 만들고 그 안에 내용을 넣어주자

Django setting

먼저 장고 프로젝트를 만드는 방법은 두가지가 있다

## console
# 끝에 . 을 찍으면 현재 디랙토리에 main.py가 생긴다
django-admin startproject drf_project .

# 끝에 . 을 찍지 않으면 drf_project폴더가 생기고 그 안에 main.py가 생긴다
django-admin startproject drf_project

일반적으론 가상환경이 셋팅 된 곳에 바로 main.py가 있는 것이 좋다

그래서 처음 세팅할 때에 디렉토리를 만들고 가상환경을 만들었다

즉 이 상황에선 . 을 찍는 것이 맞다

## console
django-admin startproject drf_project .

루트 폴더와 프로젝트 이름이 같으면 햇갈릴 수 있다는것을 깨달았다

위에서 설치한 restframework를 INSTALLED_APPS 에 추가하고 언어와 시간을 설정한다

## drf_project/settings.py

INSTALLED_APPS = [
    ...
    'rest_framework',
]


LANGUAGE_CODE = "ko-kr"

TIME_ZONE = "Asia/Seou"

Github에 연동하기 때문에 보안에 걸릴만한 요소는 차단하자

루트폴더에 secrets.json을 만들고 그 안에 settings.py에 있는 SECRET_KEY를 넣는다

## secrets.json
{
  "SECRET_KEY": "여기에 키값을 넣는다"
}

## drf_project/settings.py

import os, json
from django.core.exceptions import ImproperlyConfigured

BASE_DIR = Path(__file__).resolve().parent.parent


secret_file = os.path.join(BASE_DIR, 'secrets.json')  # secrets.json 파일 위치를 명시

with open(secret_file) as f:
    secrets = json.loads(f.read())

def get_secret(setting):
    """비밀 변수를 가져오거나 명시적 예외를 반환한다."""
    try:
        return secrets[setting]
    except KeyError:
        error_msg = "Set the {} environment variable".format(setting)
        raise ImproperlyConfigured(error_msg)


SECRET_KEY = get_secret("SECRET_KEY")

이렇게 코드를 작성하면 루트 디렉토리에 잇는 secrets.json 파일을 읽어서 장고가 사용할 수 있다

그리고 .gitignore에 secret.json을 추가하면 끝

## .gitignore

...
secrets.json
...

마지막으로 실행이 잘 되나 확인

## console
python manage.py

DB파일인 db.sqlite3가 생성됨과 동시에 서버가 작동한다

중간에 에러로 뭐라뭐라뜨는데 migrate 안해서 그런거니 일단 무시

http://127.0.0.1:8000/ 로 들어가서 작동 확인

이 페이지가 뜨면 성공

마지막으로 Github로 push하자

## console
git add .
# 업로드 하기 전에 secrets.json이 포함됬는지 한번 더 확인
git status
git commit -m "1st drf commit"
git push

시작이 반이니깐 이제 프로젝트 50%는 끝났다


Uploaded by N2T

728x90
반응형
profile

코딩한걸음

@Joonyeol_Yoon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!