DevOps/Django

[Django] 프로젝트 세팅 ( + React )

bestwish 2022. 12. 16. 15:37

1. initial setting

1-1. 가상환경

  1. python -m venv venv를 이용하여 가상환경으로 만들기.

 

1-2. git init 적용

  1. git init을 이용하여 git 활성화
  2. .gitignore 생성하여 밑에 있는 url 복사.

https://www.toptal.com/developers/gitignore/api/django

 

1-3. backend - django 설치.

  1. pip install django 명령어를 이용한 django 설치.
  2. python -m django startproject <프로젝트명>
  3. python manage.py migrate
  4. python manage.py createsuperuser
  5. 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 설치.

  1. npm create react-app <프로젝트명>
    yarn설치 방법 : npm insatll --global yarn
  2. css를 scss로 사용한다면 설치
    npm install --dev node-sass