[Python] Django - 초기세팅(2)

김상웅·2022년 6월 2일
0

[파이썬]

목록 보기
9/17

🐥 가상환경이 활성화된 상태에서 진행하는 것으로 가정하겠습니다. 🐥

✅ Django project / app


프로젝트는 하나의 웹이고, 그 웹을 로그인 페이지, 게시글 페이지 등의 구성요소를 앱이라고 볼 수 있겠습니다.

우선, 파이썬 언어를 사용하는 가상환경에서 /hoom 의 하위 경로에 작업 디렉토리를 생성해줍니다.

같은 경로에서 django 프로젝트 패키지를 생성하는 명령어를 입력해줍니다.

django-admin startproject "project_name" .

마지막에 입력한 .(dot)은 없어도 되지만, 프로젝트 디렉토리가 하위 경로에 설치되어 두개의 폴더가 생성되는 것을 방지할 수 있습니다.

앱 패키지도 생성해보겠습니다.
다음 명령어를 실행할 때에는 manage.py와 동일한 경로에서 실행해주세요!

django-admin startapp "app_name"



✅ setting.py와 my_settings.py


자바스크립트 프로젝트의 package.json 파일과 유사하게

파이썬 프로젝트에서도 모듈, 패키지, 앱, 데이터베이스 등을 관리하는 파일이 있습니다.

바로 setting.py 파일인데요, 실제 서비스 목적이 아닌 개발 목적에 맞게 파일 내부의 코드를 수정해줍니다.

하지만, setting.py 파일 내부에서 주의해야 할 코드가 있습니다.

DATABASE에 대한 정보와, SECRET_KEY 는 외부에 유출되면 심각한 보안 문제를 발생시킬 수 있습니다.

이런 정보는 my_setting.py 파일을 생성한 뒤 .gitignore에 추가하여 따로 관리해주면 되겠습니다.



✅ packages

pip list

pip list

설치된 모든 패키지와 모듈의 목록과 버전을 확인할 수 있습니다.

pip freeze

pip freeze

pip list보다 권장하는 방법입니다.

패키지와 모듈 리스트가 컴퓨터가 읽기 쉽게 공백이 없는 목록으로 반환됩니다.

pip freeze > requirements.txt

개발자는 반복을 줄이는 일 역시 굉장히 중요합니다.

위의 명령어를 통해 프로젝트에 설치된 패키지와 모듈의 버전을 text 형식으로 저장하여 협업 간 공유할 수 있습니다.

pip install -r requirement.txt

위에서 만든 텍스트 파일에 담긴 패키지와 모듈을 한꺼번에 설치할 수 있는 명령어입니다.



✅ CORS


Cross Origin Resource Sharing을 일컫습니다.

origin protocol, host, port를 모두 합친 것입니다. (https://localhost:3000처럼 생긴 도메인 주소)

위 origin을 구성하는 세가지 중 하나라도 일치하지 않으면 데이터 통신 간 Cross Domain 이슈가 발생하게 되는 것입니다.

예를 들어보겠습니다:

프론트엔드 서버 https://localhost:3000
백엔드 서버 https://localhost:8000

이런 도메인을 가진 두 서버가 데이터 통신을 한다고 가정해봅시다.
두 주소의 마지막 부분의 port 번호가 다르기 때문에 다른 도메인으로 취급하게 될 것이고, Cross Domain 에러가 발생합니다.

그렇기 때문에 이번 초기 세팅 단계에서 cors 관련 라이브러리를 추가해준 것입니다.

설치 명령어는 다음과 같습니다.

pip install django-cors-headers

설치만 했다고 해서 끝나는 것이 아니죠?

settings.py 파일을 열어 설정을 추가해줍니다.

  1. 우선 App을 추가하였으니 INSTALLED_APPScorsheaders를 추가해줍니다.

  2. middleware에도 'corsheaders.middleware.CorsMiddleware'를 추가해줍니다.
    미들웨어는 들어온 요청을 목적에 맞게 처리하여 응답을 하기 전의 중간 단계를 의미합니다.

  3. 다음 코드도 추가해줍니다.

CORS_ORIGIN_ALLOW_ALL=True
#모든 도메인에서 접근 가능

CORS_ALLOW_CREDENTIALS = True
# 모든 자격 증명을 허용 (쿠키, 인증헤더, TLS client certificates)

# HTTP METHOD
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
)

CORS_ALLOW_HEADERS = (
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
)
profile
누구나 이해할 수 있도록

0개의 댓글