Django REST Framework가 무엇인지 의미를 머리로 이해하고, 이제 손과 코딩으로 이해하기 위해 튜토리얼을 진행해보려고 한다. 진행하는 동안 과정들을 기억하고 또 글로 쓰면서 더욱 제대로 이해하는 부분도 있다고 생각하여 그 과정을 글로 정리하기로 결심하였다.
이에 앞서 Django 프로젝트를 새로 시작했을 때 초기에 설정해주어야 하는 것들을 먼저 정리하려고 한다.
1. Django 시작
Django는 간단하게 다음의 명령어를 통해 설치할 수 있다.
$ pip install django
그리고 새로운 프로젝트를 생성해주도록 한다.
$ django-admin startproject rest_tutorial
처음 프로젝트를 생성하면 다음과 같은 구조로 생성된다.
$ cd rest_tutorial
$ python manage.py runserver
manage.py runserver 명령어를 통해 개발환경에서의 django 테스트서버를 실행할 수 있고, 이후 배포할 때에는 Nginx나 Apache 등을 통해 웹서버를 분리 후 배포하는 것이 권장된다.
서버를 실행시키고 127.0.0.1:8000 으로 접속하면 서버가 정상적으로 실행된 것을 알 수 있다.
2. SECRET_KEY 분리
Django는 프로젝트 시작 시 무작위의 SECRET_KEY 값을 생성하는데, 이 값은 암호화 서명 등 보안 설정에 사용되는 값이기 때문에 이 키 값을 숨기는 것이 중요하다. 특히 프로젝트를 Git을 통해 버전관리를 할 예정이라면 이 key를 분리하여 저장하는 것이 중요하다.
manage.py가 있는 루트에 secrets.json 파일을 생성해주고 settings.py의 SETRET_KEY 값을 추가해준다.
# secrets.json
{
"SECRET_KEY": "irlx@0=!1*=isk!z*1-tzzz3fotlqm9m6oy7#0=bb!zl4_$cn2"
}
(SECRET_KEY 분리 예시)
settings.py의 SECRET_KEY 부분을 방금 생성한 secrets.json을 읽어오도록 수정해준다.
# setting.py
import json
from django.core.exceptions import ImproperlyConfigured
secret_file = os.path.join(BASE_DIR, 'secrets.json')
with open(secret_file) as f:
secrets = json.loads(f.read())
def get_secret(setting, secrets=secrets):
try:
return secrets[setting]
except KeyError:
error_msg = "Set the {0} environment variable".format(setting)
raise ImproperlyConfigured(error_msg)
SECRET_KEY = get_secret("SECRET_KEY")
그리고 이 secrets.json 파일이 노출되지 않도록 .gitignore 파일을 생성해준다.
#.gitignore
secrets.json
이미 SECRET_KEY 값이 노출되었다면 아래의 코드를 가진 파일을 실행하여 SECRET_KEY를 새로 생성할 수 있다.
#generate_secretkey.py
from django.core.management import utils
print(utils.get_random_secret_key())
3. LANGUAGE_CODE / TIME_ZONE 설정
# settings.py
LANGUAGE_CODE = 'ko'
TIME_ZONE = 'Asia/Seoul'
4. TEMPLATES 경로 설정
Template 폴더를 각 App마다 생성하지 않고 한 곳에서 관리하기 위해 TEMPLATES의 'DIRS'를 수정해준다.
# settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates")],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
5. STATIC / MEDIA 경로 설정
Django 프로젝트의 정적 파일들(css, js, img 등)을 관리하기 위한 경로, 그리고 파일 / 사진 첨부 등 media 파일을 저장하는 경로를 추가해 준다.
# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATIC_ROOT = os.path.join(BASE_DIR, '.static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
지정된 루트에 미리 templates, static, media 폴더를 생성한다.
이 후 Django REST Framework 튜토리얼을 진행해보려고 한다.
'코딩 > PYTHON & DJANGO' 카테고리의 다른 글
[Python] 날씨 알림 슬랙 챗봇 만들기4 - Django를 이용하여 채팅창 구독 (0) | 2022.07.07 |
---|---|
[Python] 날씨 알림 슬랙 챗봇 만들기3 - 슬랙API 이용하여 메세지 보내기 (0) | 2022.07.07 |
[Python] 날씨 알림 슬랙 챗봇 만들기2 - 날씨 정보 받아오기(기상청 API) (0) | 2022.07.06 |
[Python] 날씨 알림 슬랙 챗봇 만들기1 - 날씨 정보 받아오기(기상청 API) (0) | 2022.07.06 |
Django REST framework 튜토리얼 따라하기 (0) | 2021.04.13 |
최근댓글