[Westagram] -1

[Mission 1] Django 초기 세팅

1. 가상환경

1-1. 가상환경 생성

conda create -n westagram python=3.9

1-2. 가상환경 활성화

conda env list # 가상환경 목록 출력
conda activate westagram # 가상환경 활성화

2. 프로젝트 초기 설정

2-1. Database 생성

mysql> CREATE DATABASE westagram CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2-2. Project 초기세팅

  • Project Repository Clone
# 프로젝트를 시작할 디렉토리로 이동해주세요.
    
# 현재 위치한 디렉토리를 git repository 로 만들기 (미리 directory 생성한 경우)
# ex) ~/Desktop/wecode/westagram
    
git clone "위에서 복사한 github 주소" .    # 뒤에 점 '.' 꼭 찍어주세요.
    
# 현재 위치한 디렉토리에 git repository 를 생성하기 (다른 파일이 있는 데스크탑과 위치와 같은 경우)
# ex) ~/Desktop
    
git clone "위에서 복사한 github 주소"     # 점을 찍지 않습니다.
  • Project Python Package 설치
# (중요) 꼭 가상환경 확인해주세요!
pip install django
   
이후에 MySQL server에 접속하기 위한 package (중요) mysql 설치되어 있는지 먼저 확인해주세요
pip install mysqlclient
   
pip install django-cors-headers
  • Django Project 설정
  1. branch 생성 & branch 이동
  • 브랜치 생성은 feature/이름-기능으로 구분합니다.
  • 개인 프로젝트 코드는 각자의 디렉토리로 관리하게 됩니다.
  • 브랜치 생성 후, 해당하는 feature 브랜치로 이동해서, 각자의 디렉토리 생성, django project를 실행하게 됩니다.
# 경로는 모두 예시입니다.
# 각자 생성한 repository 의 위치로 이동해주세요.
# ~/Desktop/wecode/00-westagram-backend
.
├── README.md
├── guide
├── pull_request_template.md
└── students
    └── karam
  1. Django Project 생성
# ~/Desktop/wecode/00-westagram-backend/karam
    
django-admin startproject westagram
cd westagram

# ~/Desktop/wecode/00-westagram-backend/karam/westagram
karam
├── manage.py
└── westagram
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
  1. 초기 개발환경 설정
# westagram/settings.py
ALLOWED_HOSTS = ['*']
...
INSTALLED_APPS = [
#    'django.contrib.admin',
#    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages'
    'django.contrib.staticfiles',
]
    
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',
]
# westagram/urls.py
from django.urls import path
        
urlpatterns = [
]
  • my_settings.py 생성 (DATABASES, SECRET_KEY)
    • django 설정에 존재하는 내용 중 SECRET_KEY, DATABASES 등은 소스로서 공유해야 하는 내용이 아닙니다. 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.
    • settings.py에 바로 저장되는 방식은 지양해야 합니다.
cd '생성한 프로젝트 폴더명'
touch my_settings.py
        
(참고) 프로젝트 디렉토리 구조 구조
        .
└── karam
    ├── manage.py
    ├── my_settings.py
    └── westagram
        ├── __init__.py
        ├── asgi.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py
# my_settings.py
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
     	'OPTIONS': {'charset': 'utf8mb4'}
    }
}
        
SECRET_KEY = '시크릿키' #settings.py에 있는 secret_key 를 사용합니다.
# settings.py
from pathlib     import Path #기존에 settings.py 에 있는 코드
from my_settings import DATABASES, SECRET_KEY
        
...
        
DATABASES = DATABASES
        
SECRET_KEY = SECRET_KEY
  • corsheaders
# settings.py
INSTALLED_APPS = [
    ...
   'corsheaders'
]

MIDDLEWARE = [
    ...
'corsheaders.middleware.CorsMiddleware',
    ...
]
...
#REMOVE_APPEND_SLASH_WARNING
APPEND_SLASH = False

##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',    		
)
  • requirements.txt 생성
    • 협업에 가장 중요한 점은 동일한 개발환경을 구축해야 한다는 것입니다.
    • 즉, 환경(사용자의 컴퓨터)마다 사용하는 패키지를 동일하게 해야합니다.
    • manage.py가 있는 위치에서 아래 커맨드를 작성해주세요.
pip freeze

# 생성한 requirements.txt를 확인해서 필수 패키지를 복사 붙여넣기 후, 저장해주세요.
touch requirements.txt
vi requirements.txt
    
# requirements.txt
Django==3.2.4
django-cors-headers==3.7.0
mysqlclient==2.0.3
  • .gitignore 생성
    • gitignore.io 에서 키워드를 추가 후 Create를 해주세요.
    • Create하여 나온 내용을 .gitignore 파일 생성 후, 붙여넣기
touch .gitignore
vi .gitignore
            
############################
# gitignore.io 결과 전체 복사 #
############################
            
# 가장 하단 my_settings.py 추가하기
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)
  • 프로젝트 서버 실행
# 최종적인 초기 프로젝트 구조
├── .gitignore # 숨김설정 되어 있습니다.
├── manage.py
├── my_settings.py
├── requirements.txt
└── westagram
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
  • 서버 동작(Runserver)을 통한 오류 검증
python manage.py runserver 8080 # manage.py 위치에서 작성

Github Pull Request 생성

3-1. git add & commit

  • Add & Commit
    • git init을 통해 새로 git repository를 만든 후 연동하는 작업을 진행하지 않아도 괜찮습니다. 이미 clone을 받았기 때문입니다.
### (중요) git branch 를 꼭 feature/suntae-initial-setting 으로 변경해주세요!
### main 에서 작업하시면 안됩니다!
    
git checkout feature/karam-initial-setting
    
git add . 
git commit -m "project initial setting"
git push origin feature/karam-initial-stting
  • pull Request
    • 프로젝트 github repository로 접속합니다.
    • 보통 최근 push한 내역이 나타납니다.
    • 나타나지 않는 경우 Pull requests 탭으로 이동 후 New pull request 선택 후 compare 부분에 본인이 push한 브랜치를 설정해주세요.
    • Create pull request를 통해 PR을 생성해주세요.

좋은 웹페이지 즐겨찾기