반응형
Django 프로젝트 단계별 가이드라인 2
Postgresql 연동
Local.py로 이동 / 환경 변수 분리
1. settings 디렉토리 생성 후, 기존의 settings.py를 base.py라는 이름으로 이동
2. base.py 파일의 BASE_DIR 수정
BASE_DIR = Path(__file__).resolve().parent.parent.parent
3. settings 디렉토리 안에 local.py 파일과 prod.py 파일 생성
4. local.py 파일에 위에서 연동한 postgresql 설정 코드 옮기기
from .base import *
DEBUG = True
ALLOWED_HOSTS = ["*"]
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": env("DB_NAME"),
"USER": env("DB_USER"),
"PASSWORD": env("DB_PASSWORD"),
"HOST": env("DB_HOST"),
"PORT": env("DB_PORT"),
}
}
5. prod.py도 수정 - 아직 배포 단계는 아니니 공백
from .base import *
DEBUG = False
ALLOWED_HOSTS = ["*"]
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "",
"USER": "",
"PASSWORD": "",
"HOST": "",
"PORT": "",
}
}
6. 서버 실행 - 설정 파일의 경로를 입력한다.
python3 manage.py runserver --settings=프로젝트파일.settings.local
7. 로컬 설정 자동화
매번 실행할 때마다 옵션으로 --setting를 붙이면 너무 길어지니 로컬 환경 변수를 설정할 수 있다.
윈도우
set DJANGO_SETTINGS_MODULE=프로젝트파일.settings.local
맥북
export DJANGO_SETTINGS_MODULE=obab.settings.local
8. 내가 진행한 방법
나는 환경변수로 설정하기에는 기존에 진행하던 프로젝트도 있고 프로젝트의 폴더 이름을 변경하는 것도 싫어서 makefile을 만들어서 진행하였다.
DRF, 스웨거 설치
App 생성
core
'core'앱은 프로젝트에서 공통으로 사용되는 핵심 모델, 유틸리티 함수, 믹스인 등을 작성할 예정입니다.
python3 manage.py startapp core
Accounts
'Accounts'앱은 로그인 관련 기능과 User 관련 기능들을 작성할 예정입니다.
python3 manage.py startapp core
TimeStampedModel
'core' models.py 파일
TimeStampedModel 클래스를 작성해서 다른 앱에서 상속하여 사용하도록 작성해두겠습니다. 이렇게 해두면 다른 모델에서 생성일과 업데이트일을 작성하지 않고 상속받아 사용할 수 있습니다.
from django.db import models
class TimeStampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null=True)
커스텀 유저
반응형