westagram | 1. Django 초기 세팅

15658 단어 WeCodedjangoWeCode

:: 가상환경

1. 가상환경 생성 후 활성화

$ conda create -n westagram python=3.8
# 생성

$ conda activate westagram
# 활성화

:: 프로젝트 초기 설정

1. Database 생성

mysql>> CREATE DATABASE westagram CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2. Project 초기세팅

  1. Project Repository Clone
git  clone 'github 주소'
  1. Pfoject Python Package 설치
# (중요) 꼭 가상환경 확인해주세요!
$ pip install django

# 이후에 MySQL server에 접속하기 위한 package (중요) mysql 설치되어 있는지 먼저 확인해주세요
$ pip install mysqlclient

$ pip install django-cors-headers

3. Django Project 설정

  1. branch 생성 & 이동
  • 브랜치 생성은 feature/이름-기능 으로 구분합니다.
    git branch feature/junga-initial-setting
    # 생성
    
    git checkout feature/junga-initial-setting
    # 이동
  • 개인 프로젝트 코드는 각자의 디렉토리로 관리하게 됩니다.
  • 브랜치 생성 후, 해당하는 feature 브랜치로 이동해서, 각자의 디렉토리 생성, django project 를 실행하게 됩니다.
  • students 디렉토리 안에 본인의 이름으로 새로운 디렉토리를 생성해주세요.
  1. Django Project 생성 후 이동
$ django-admin startproject westagram
$ cd westagram
  1. 초기 개발환경 설정

< settings.py 설정 >

  • IP 허용
    ALLOWED_HOSTS = ['*']
  • 주석처리 (admin, csrf, auth)
    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 생성 >

! manage.py와 같은 위치에 생성 !

  • 장고 설정에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 내용이 아닙니다. 별도의 파일 혹은 환경변수로서 관리하는게 좋습니다.

  • settings.py에 바로 저장되는 방식은 지양해야 합니다.

  • 별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법으로 진행

  • 파일에 실제 쓰여지는 내용


DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'westagram',    # 데이터베이스명
        'USER': 'root',		# db접속 계정명
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
				'OPTIONS': {'charset': 'utf8mb4'}
    }
}

SECRET_KEY = '시크릿키' #settings.py에 있는 secret_key 를 사용합니다.

< settings.py ↔ my_settings.py 연동 >

  #settings.py를 수정합니다.
  
  from pathlib        import Path #기존에 settings.py 에 있는 코드
  from my_settings.py import DATABASES, SECRET_KEY
  
  ...
  
  DATABASES = DATABASES
  
  SECRET_KEY = SECRET_KEY

< corsheaders >

  • settings.py에 INSTALLED_APPS 안에 추가해줘야합니다.
INSTALLED_APPS = [
...
		'corsheaders'
]
  • middleware도 추가해야합니다.
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',
		#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)
  • 모든 내용은 settings.py안에 기록되야 합니다.

< requirements.txt 생성 >

  • 우리는 협업을 위해 github repository 를 사용합니다.
  • 협업에 가장 중요한 점은 동일한 개발환경을 구축해야 한다는 것입니다.
  • 즉 환경(사용자의 컴퓨터) 마다 사용하는 패키지를 동일하게 해야합니다.
  • manage.py 가 있는 위치에서 아래 커맨드를 작성해주세요.
$ pip freeze
  • 생성된 requirements.txt 를 확인해서 필수 패키지를 복사 붙여넣기 후, 저장해주세요.
touch requirements.txt
vi requirements.txt

Django==3.2.4
django-cors-headers==3.7.0
mysqlclient==2.0.3

# m1의 경우 아래 패키지도 추가해주세요.
PyMySQL==1.0.2

< .gitignore 생성 >

! manage.py와 같은 위치에 생성 !

  • 아래 키워드를 추가 후 Create

    python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh

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

  • 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 # manage.py 위치에서 작성
  • 정상 동작 예시

:: Github Pull Request 생성

1. 초기 세팅 검토

2. git add & commit

  • Add & Commit
    • git init 을 통해 새로 git repository 를 만든 후 연동하는 작업을 진행하지 않아도 괜찮습니다. 이미 우리는 clone 을 받았으니까요!
        ### (중요) git branch 를 꼭 feature/junga-initial-setting 으로 변경해주세요!
        ### main 에서 작업하시면 안됩니다!
        
        git checkout feature/junga-initial-setting
        
        git add . 
        git commit -m "project initial setting"
  • 이제 github repository 에 push 합니다.
        git push origin feature/junga-initial-stting
  • Pull Request
    • 위스타그램 프로젝트 github repository 로 접속합니다.
    • 보통 아래와 같이 최근 push 한 내역이 나타납니다.

  • (참고) 나타나지 않는 경우
    - Pull requests 탭으로 이동 후 New pull request 선택해주시고

  • compare 부분에 본인이 push 한 브랜치를 설정해주세요

  • Create pull request 를 통해 PR 을 생성해주세요.

  • 예: base: main ← compare:feature/suntae

  • PR 템플릿의 제목은 아래와 같이 작성해주세요.

    [이정아] Mission 1: Django 초기 세팅

  • 라벨 변경
    • Pull request 작성후, 라벨을 변경해주세요.
    • 리뷰요청 → 멘토가 라벨을 확인 하고 수정사항을 확인합니다. 이후 피드백 진행
    • 수정요청 → 멘토가 수정사항을 확인한 후 피드백 남겨놓습니다.
    • 피드백에 따라 수정 후에 다시 리뷰 요청으로 변경해주세요.


완료❗️

좋은 웹페이지 즐겨찾기