/ PYTHON

Python(5) - Django 가상 환경과 settings.py

Python 관련 포스팅

Django를 써보면서 알게 된 내용을 정리했습니다.
틀린 내용이 있다면 편하게 의견 남겨주시기 바랍니다 :)

가상환경 설정

1. 가상환경 생성

  • 프로젝트 별로 다른 버전의 python과 django를 사용하기 위함
  • 가상환경을 관리할 폴더프로젝트를 관리할 폴더를 각각 만드는 것이 관리하기 편함
  • 만들 프로젝트의 이름으로 가상환경을 생성
  • 이 방법이 가상환경을 관리하기 편하다고 생각
    mkdir [가상환경을 관리할 폴더 이름]      # 디렉터리 생성
    cd [가상환경 폴더 저장할 디렉터리]       # 디렉터리로 이동
    python -m venv [가상환경 이름]          # 가상환경 생성 
    

2. 가상환경 진입(활성화)

  source [가상환경 이름]/scripts/activate   # 가상환경 활성화
  • 가상 환경에 진입하면, 터미널의 디렉터리명 앞에 (가상환경 이름) 이 덧붙여져 나타남
  • 가상환경에서 나가려면 경로와 상관없이 deactivate 입력
    deactivate                         # 가상환경 비활성화
    

3. django, djangorestframework, psycopg2 설치

  • 가상환경에 진입한 상태에서 설치를 진행함
      pip install django
      pip install djangorestframework
      pip install psycopg2              # PostgreSQL 사용시 설치
    
  • pip upgrade 경고 문구가 뜬다면,
    pip upgrade: (windows) python -m pip install --upgrade pip
  • 참고
    • django upgrade(특정 버전): pip install --upgrade django==4.0.5
    • pip version 확인: pip --version
    • 업데이트 해야 할 패키지 목록 확인: pip list -o

4. project만들기

  • 프로젝트를 설치할 폴더로 이동해 프로젝트 이름으로 디렉터리 만들기
    cd [프로젝트를 설치할 폴더]
    mkdir [프로젝트 이름]
    cd [프로젝트 이름]
    
  • [project 이름]config . 으로 만들면 프로젝트 관리가 수월함
    (출처: 참고한 사이트)

      cd ..
      django-admin startproject [project 이름]    # 프로젝트 생성
      python manage.py runserver                  # 서버 실행
    

settings.py 설정

1. SECRET_KEY 설정

  1. project root 경로에 secret_file.py 생성
  2. settings.pySECRET_KEY = '...(내용)...' 복사해 붙여넣기
  3. settings.py 수정
     import secret_file
     ...
     SECRET_KEY = secret_file.SECRET_KEY
    

2. INSTALLED_APPS 설정

  1. app 설치
     django-admin startapp [app 이름]    # app 생성
    
  2. 생성한 apprest_framework추가
     INSTALLED_APPS = [
             ...
         'rest_framework',                 # 추가
         '생성한 app 이름',                 # app 추가
         '생성한 app 이름',                 # app 추가
     ]
    

3. TEMPLATES'DIRS' 설정

  TEMPLATES = [
      {
                ...
          'DIRS': [BASE_DIR / 'templates'], # 수정
                ...
      },
  ]
  • 여기서 BASE_DIR은 project 폴더
  • root에 templates 디렉터리 생성
    • 모든 앱이 공통으로 사용할 템플릿 디렉터리 - [root]/templates
    • 특정 앱이 사용할 템플릿 디렉터리 - [root]/templates/[특정 app]
  • 이렇게 templates 폴더를 관리해주어야 Django가 제대로 인식 할 수 있음

4. DB 설정(postgreSQL)

  • 참고로, 이 과정은 반드시 python manage.py makemigration을 하기 전에 시행되어야 함
    DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.postgresql',
          'NAME': 'DB이름',       # DB 이름
          'USER': 'postgres',
          'PASSWORD': '1234',     # 비밀번호
          'HOST': 'localhost',  
          'PORT': '5432',
      }
    }
    
  • secret_file.py 에 위 내용 붙여넣기
  • settings.py는 아래 코드로 바꾸기
      DATABASES = secret_file.DATABASES 
    

5. LANGUAGE_CODE, TIME_ZONE 설정

  LANGUAGE_CODE = 'ko-kr'
  TIME_ZONE = 'Asia/Seoul'

6. STATICFILES_DIRS 추가하기

  • STATIC_URL = 'static/' 아래에 추가하기

      STATIC_URL = 'static/'
      STATICFILES_DIRS = [
          BASE_DIR / 'static',
      ]
    
  • [project]아래에 static 폴더 만들기
  • BASE_DIR / 'static'은 [root]/static 디렉터리를 의미함

7. urls.py 작성

  • [project 이름]/urls.py
    from django.contrib import admin
    from django.urls import include, path
      
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('account/', include('account.urls')),  # 예시
    ]
    

8. admin 페이지 사용하기

  • Django에서 제공하는 admin 페이지입니다
    1. superuser 생성하기
        python manage.py createsuperuser           # superuser 생성
      
    2. 사용자 이름, 이메일, password를 입력
    3. [app]/admin.py 작성

       from django.contrib import admin
       from .models import 모델명
            
       # Register your models here.
            
       admin.site.register(모델명)
      
  • 서버 실행 후 admin에 접속 bash python manage.py runserver http://127.0.0.1:8000/admin에 접속