Django - 기타 지식

문주은·2022년 6월 29일
0

1. Django 개발시 유의사항

1-1) Model 필드 타입

DB 구조에 따라 최대한 필드 타입을 타이트하게 지정해주는 것이 입력값 오류를 막을 수 있음.

  • model을 꼼꼼히 설계
  • blank/null 지정은 최소화
  • validators 들을 타이트하게 지정
  • 유효성 검사가 필수이므로 django의 form 또는 django-rest-framework의 Serializer 사용

2. API 서버와 REST

2-1) GET, POST

GET

  • 리소스에 대한 세부 정보
  • ex) /posts : 모든 포스팅 목록, /posts/1/ : 포스팅 1에 대한 목록
  • 200(OK), 404(Resource Not Found)

POST

  • 새로운 리소스 생성 요청
  • ex) /posts : 새로운 포스팅 만들기
  • 200 or 201(OK), 204(반환할 결과 내용 없음), 400(잘못된 데이터로 요청)

PUT

  • 업데이트(변경)
  • 기존 리소스 항목들 모든 변경
  • 200(OK), 204(내용 없음), 409(충돌)

PATCH

  • 업데이트(변경)
  • 기존 리소스에서 부분값만 지정하여 변경

3. settings 환경 분리 및 배포

Django 프로젝트 진행 시 개발 환경과 실제 운영환경에 대해서 분리 할 필요가 있습니다.

3-1. 환경 분리

[ 개발 환경 ]

python manage.py runserver --settings=ProjectName.settings.development # 개발(디버그)용
python manage.py makemigrations --settings ProjectName.settings.development
python manage.py migrate --settings=ProjectName.settings.development
  • DJANGO_SETTINGS_MODULE 환경 변수를 원하는 환경으로 설정하면 --settings 옵션 없이도 이용 가능
export DJANGO_SETTINGS_MODULE=ProjectName.settings.development // 개발 환경 변수 설정

[ 운영 환경 ]

python manage.py runserver --settings=ProjectName.settings.production # 배포(서비스)용
python manage.py makemigrations --settings ProjectName.settings.production
python manage.py migrate --settings=ProjectName.settings.production
  • DJANGO_SETTINGS_MODULE 환경 변수를 원하는 환경으로 설정하면 --settings 옵션 없이도 이용 가능
export DJANGO_SETTINGS_MODULE=ProjectName.settings.development // 개발 환경 변수 설정

3-2. gunicorn 서버

  • 처음 gunicorn service 등록시
    sudo systemctl start gunicorn.service
    sudo systemctl enable gunicorn.service
    sudo systemctl status gunicorn.service  
  • 다른 변경 사항이 있을 시
    sudo systemctl stop gunicorn.service
    sudo systemctl start gunicorn.service

3-3. gunicorn 방화벽 설정

  • 외부에서 port 접근 허용하도록 설정

    # 방화벽 설정 확인
    sudo iptables -nL   
    
     # TCP 트래픽 허용 규칙
    sudo iptables -I INPUT 1 -p tcp --dport 8000 -j ACCEPT 
    
    # 전송 프로토콜을 UDP로 지정
    sudo iptables -I INPUT 1 -p udp --dport 8000 -j ACCEPT
profile
Data Engineer

0개의 댓글