[Django] 프로젝트 세팅 ( + React )
1. initial setting
1-1. 가상환경
- python -m venv venv를 이용하여 가상환경으로 만들기.
1-2. git init 적용
- git init을 이용하여 git 활성화
- .gitignore 생성하여 밑에 있는 url 복사.
https://www.toptal.com/developers/gitignore/api/django
1-3. backend - django 설치.
- pip install django 명령어를 이용한 django 설치.
- python -m django startproject <프로젝트명>
- python manage.py migrate
- python manage.py createsuperuser
- settigs.py 설정
# react에서 관리하는 파일 제외하고 css파일 등을 관리.
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# 이미지 등 파일 관리.
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
6. project urls.py 설정
from django.conf import settings # 추가
from django.conf.urls.static import static # 추가
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
# DEBUG 옵션이 False면 static이 빈리스트를 반환 추가
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
7. django prettier black 설치
pip install black
8. django 개발용 툴바 설치
pip install django-debug-toolbar
https://django-debug-toolbar.readthedocs.io/en/latest/installation.html
settings.py는 위 링크를 참고.
# projects/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
]
# DEBUG 옵션이 False면 static이 빈리스트를 반환
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# 추가
import debug_toolbar
urlpatterns += [
path("__debug__/", include(debug_toolbar.urls)),
]
9. settings.py 분리
1. settings.py를 git mv <프로젝트명>/settings.py <프로젝트명>/settings/common.py 를 이용하여 이동.
2. common.py를 열어, BASE_DIR 경로를 django프로젝트 최상단으로 맞게 수정한다.
BASE_DIR = Path(__file__).resolve().parent.parent.parent
3. dev.py(개발용), prod.py(배포용)을 생성한다.
4. 8번에서 설치한 debug_toolbar를 dev.py에서 사용할 수 있게 수정한다. (prod.py는 gunicorn 또는 nginx)
# dev.py
from .common import *
# common.py INSTALLED_APPS 맨 뒤에 추가.
INSTALLED_APPS += [
'debug_toolbar',
]
# common.py MIDDLEWARE 맨 앞에 추가.
MIDDLEWARE = [
'debug_toolbar.middleware.DebugToolbarMiddleware',
] + MIDDLEWARE
INTERNAL_IPS = ["127.0.0.1"]
5. 개발용인 manage.py와 배포용인 wsgi.py를 수정한다.
# manage.py
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys
def main():
"""Run administrative tasks."""
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings.dev') # 수정 dev 붙여줌
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
if __name__ == '__main__':
main()
# wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings.prod') # 수정 prod 붙여줌
application = get_wsgi_application()
10. SECRET_KEY분리
1. https://django-environ.readthedocs.io/en/latest/quickstart.html django-environ 설치
2. .env파일 프로젝트 최상단에 생성
3. common.py 수정
# .env
SECRET_KEY=시크릿 키
# common.py
import environ
...
# 추가
env = environ.Env()
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
SECRET_KEY = env('SECRET_KEY')
...
1-4 frontend - react 설치.
- npm create react-app <프로젝트명>
yarn설치 방법 : npm insatll --global yarn - css를 scss로 사용한다면 설치
npm install --dev node-sass