장고로 프로젝트를 처음 시작할때 고려 해야 하는 사항
1) .gitignore
링크텍스트
https://www.gitignore.io
위의 사이트에서 사용하는 환경에 해당하는 키워드를 선택하면, 자동으로 .gitinore 파일에 정의할 요소들을 생성해줍니다
소스를 공유하기 이전에 올라가선 안될 것들이 존재합니다. 이를 구분짓기위해 깃이 설치된 디렉토리에 .gitinore파일을 생성해서 관리해야 합니다.
생설된 결과물은 복사하여 아래의 과정을 거쳐 저장하겠습니다
cd '프로젝트 폴더명'
touch .gitignore
vi .gitignore
주석처리
사용하지 않는 요소는 주석처리합니다
admin, csrf, auth를 주석합니다
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'account',
'comment',
'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',
]
corsheaders
corsheaders
corsheaders는 무엇일까요?
과거의 서버 (2세대)의 인증은 CSRF를 대비했습니다. 왜냐하면, 페이지를 제공했기 때문이죠.
현재 우리가 만들 서버에는 페이지가 없습니다. 하지만, 보안은 중요합니다. 그렇다면 어떤방식이 있을까요.
위의 블로그를 보고 이해하셨으면 좋겠습니다.
따라서 우리는 이 미연에 방지하기 위해! 초기에 설정합니다.
먼저 해야할일은 cors에 대한 처리를 원할하게 도와줄 플러그인인 django-cors-headers를 설치합니다.
pip install django-cors-headers
설치했다면 settings.py에 INSTALLD_APPS 안에 추가해줘야합니다.
INSTALLED_APPS = [
...
'django.contrib.staticfiles',
'corsheaders'
]
middleware도 추가해야합니다.
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
...
]
마지막으로 허용할 값을 정의 합니다.
##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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
모든 내용은 settings.py안에 기록되야 합니다.
requrirements.txt를 생성해야 합니다.
팀 프로젝트를 진행한다는 것은 서로 공유되는 코드를 작성한다는 것을 의미합니다.
앞으로는 코드를 처음 전달 받는 사람도, 바로 동일한 환경을 구성할 수 있도록 정보를 전달해야 합니다.
그러기 위해서 존재하는 것이 바로 requirements.txt 입니다.
requirements.txt의 작성법은 보통 이렇습니다.
```bash
pip freeze > requirements.txt
```
pip freeze 는 현재 로컬환경에 설치된 파이썬 모듈 정보를 보는 명령어 입니다.
pip freeze 의 결과를 requirements.txt에 기록하는 것입니다.
보안설정
장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다.
별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
이 말인 즉, settings.py에 그냥 기록되는건 지양해야 한다는 것 입니다.
그래서 wecode에서는 별도의 참조용 파이썬 파일을 하나 생성해서, 참조하는 방법을 가이드합니다.
터미널 창에서 아래와 같이 실행합니다.
django-admin startproject '하고싶은 프로젝트 명'
cd '생성한 프로젝트 폴더명'
touch my_settings.py
파일에 실제 쓰여지는 내용
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '실제 DB 주소',
'PORT': '포트번호',
}
}
SECRET = {
'secret':'시크릿키',
}
위의 내용은 예시입니다.
DATABASE 설정을 적용하려면,
import my_settings
DATABASE = my_settings.DATABASES
추가적으로 외부 API(SNS 로그인, AWS 접속용 정보 등)도 기록할 수 있습니다.
중요한 정보는 직접 소스로 공유하지 않고 위와 같이 별도의 파일을 통해 관리합니다.
또한 이 파일은 깃 저장소에 공유하지 않으므로, .gitignore 파일에도 등록해야 합니다.