[Django] 그룹 프로젝트를 위해 장고 기본적인 세팅하기

Magit·2020년 4월 19일
1

group-project

목록 보기
1/6

그룹프로젝트를 위해 백엔드 기본적인 세팅을 했다.

1. .gitignore

협업할 때 자주사용하는 git에 올려서는 안되는 내용이 올라가는걸 막아주는 파일이다. .gitignore 라는 파일 안에 무엇을 생략하고 올려면 좋을지 적으면된다.

그런데 뭘 올리면 안될지 모르겠으면 http://gitignore.io/ 이 사이트에서 자기가 쓰는 os환경, 프로그래밍언어 등을 작성하면 자동으로 무시할 리스트를 쫙 뽑아준다.
나는 장고를 통해서 프로젝트를 할 것이며, manage.py가 있는 디렉토리에 my_setting.py라는 파일을 생성해서 중요한 내용을 적을 것이니 .gitignore에 추가해줘야한다.


2. settings 주석처리

이미 이전에도 했던 사안이지만, 지금 내가 사용하지 않는 기능들을 주석처리해놓자.

INSTALLED_APPS = [
   # 'django.contrib.admin',
   # 'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
   # 'django.middleware.csrf.CsrfViewMiddleware',
   # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'corsheaders.middleware.CorsMiddleware',
]

APPS의 admin과 auth, MIDDLEWARE의 csrf, auth를 주석처리해놨다. (사용해야되는 사람들은 주석처리를 풀어야한다.)

admin기능을 주석처리했다면 이제 urls.py에 있는 admin 관련 코드들도 주석처리해주자.

#from django.contrib import admin
from django.urls import path

urlpatterns = [
#    path('admin/', admin.site.urls),
]

3. corsheaders 설정하기

장고 설정을 할 때 외부에서 내 서버에 접속할 때 CORS 에러가 발생할 수 있다.
장고에서의 CORS에 대한 설명은 아래 블로그들에 잘 설명되있다.
Django - 내 로컬 서버에서 외부접속 허용하기(corsheaders)
Django CORS 설정과 API 연동

먼저 장고에서 제공하는 CORS를 해결하기위한 패키지를 설치해야한다.

pip install django-cors-headers

설치가 완료되면 settings.py에도 정보를 추가해야한다. 앱이 설치되었으니 장고에게 알려줘야하고, 입출력제어를 해줄 수 있게 미들웨어에도 등록해줘야한다.

INSTALLED_APPS = [
	...
    'corsheaders',
]

MIDDLEWARE = [
	...
    'corsheaders.middleware.CorsMiddleware',
]

마지막으로 settings.py의 마지막에 아래 코드를 입력해주자. 모든 요청을 허용하도록 하는 설정인데, 테스트환경에서 사용가능한 설정이다.

##CORS
CORS_ORIGIN_ALLOW_ALL=True
CORS_ALLOW_CREDENTIALS = True
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',
    #만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)

4. requirements.txt 만들기

requirements.txt 에는 해당 프로젝트가 어떤 프로그램이 몇 버젼의 프로그램으로 만들어졌는지 공유할 수 있다.
보통 프로젝트마다 가상환경을 따로 파서 하다보니 pip freeze 로 해당 가상환경에 설치된 프로그램들을 알 수 있는데, 여기에 pip freeze > requirements.txt 라는 명령어를 입력하면 해당 가상환경에 설치된 라이브러리 및 버젼을 기록한 requirements.txt 파일을 자동으로 생성해준다.
장고의 경우 위치는 manage.py가 있는곳에서 만들면 된다.

$ pip install -r requirements.txt

위의 코드로 requirements.txt에 저장되있는 pip 리스트를 인스톨 시킬 수 있다.


5. 보안을 위해서 secret키 및 데이터베이스 정보 따로 빼놓기

원래 settings.py에 장고가 제공해주는 데이터베이스와 sercet키가 있다. 하지만 settings.py은 git에 업로드되므로 비밀내용들은 따로 파일에 작성해줘야한다.
my_settings.py 라는 새로운 파일을 manage.py가 있는곳에서 만든다음에 감춰야될 정보를 적어주자

# my_setting.py

SECRET = {
        'secret' : '시크릿키'
}

DATABASES = {
	'default' : {
		'ENGINE': 'django.db.backends.mysql',
		'NAME': '데이터베이스명',
		'USER': '데이터베이스 접속 계정명',
		'PASSWORD': '데이터베이스 접속 패스워드',
		'HOST': '데이터베이스 주소',
		'PORT': '포트 번호',
		'OPTIONS': {'charset': 'utf8mb4'},
		'TEST': {
			'CHARSET': 'utf8mb4',
			'COLLATION': 'utf8_general_ci'
		}
	}
}

이런식으로 my_settings.py에 따로 정보를 작성해놓으면 된다. 당연히 해당 파일은 .gitignore로 git에 올라가지않게 해줘야한다!

그리고 저 감춰둔 정보를 사용할 때는 settings.py에서 import 하는 형식으로 사용한다.

# settings.py

import my_settings

SECRET_KEY = my_settings.SECRET['secret']

DATABASES = my_settings.DATABASES

원래 있던 DATABASES나 SECRET_KEY는 삭제할건 삭제하고 주석처리할건 주석처리하면 된다.

profile
이제 막 배우기 시작한 개발자입니다.

0개의 댓글