westagram | 1. Django 초기 세팅
:: 가상환경
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 초기세팅
- Project Repository Clone
git clone 'github 주소'
- Pfoject Python Package 설치
# (중요) 꼭 가상환경 확인해주세요!
$ pip install django
# 이후에 MySQL server에 접속하기 위한 package (중요) mysql 설치되어 있는지 먼저 확인해주세요
$ pip install mysqlclient
$ pip install django-cors-headers
3. Django Project 설정
- branch 생성 & 이동
- 브랜치 생성은 feature/이름-기능 으로 구분합니다.
git branch feature/junga-initial-setting
# 생성
git checkout feature/junga-initial-setting
# 이동
- 개인 프로젝트 코드는 각자의 디렉토리로 관리하게 됩니다.
- 브랜치 생성 후, 해당하는 feature 브랜치로 이동해서, 각자의 디렉토리 생성, django project 를 실행하게 됩니다.
- students 디렉토리 안에 본인의 이름으로 새로운 디렉토리를 생성해주세요.
- Django Project 생성 후 이동
$ django-admin startproject westagram
$ cd westagram
- 초기 개발환경 설정
$ 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 초기세팅
- Project Repository Clone
git clone 'github 주소'
- Pfoject Python Package 설치
# (중요) 꼭 가상환경 확인해주세요!
$ pip install django
# 이후에 MySQL server에 접속하기 위한 package (중요) mysql 설치되어 있는지 먼저 확인해주세요
$ pip install mysqlclient
$ pip install django-cors-headers
3. Django Project 설정
- branch 생성 & 이동
- 브랜치 생성은 feature/이름-기능 으로 구분합니다.
git branch feature/junga-initial-setting
# 생성
git checkout feature/junga-initial-setting
# 이동
- 개인 프로젝트 코드는 각자의 디렉토리로 관리하게 됩니다.
- 브랜치 생성 후, 해당하는 feature 브랜치로 이동해서, 각자의 디렉토리 생성, django project 를 실행하게 됩니다.
- students 디렉토리 안에 본인의 이름으로 새로운 디렉토리를 생성해주세요.
- Django Project 생성 후 이동
$ django-admin startproject westagram
$ cd westagram
- 초기 개발환경 설정
< 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 한 내역이 나타납니다.
- 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"
git push origin feature/junga-initial-stting
- 위스타그램 프로젝트 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 작성후, 라벨을 변경해주세요.
- 리뷰요청 → 멘토가 라벨을 확인 하고 수정사항을 확인합니다. 이후 피드백 진행
- 수정요청 → 멘토가 수정사항을 확인한 후 피드백 남겨놓습니다.
- 피드백에 따라 수정 후에 다시 리뷰 요청으로 변경해주세요.
완료❗️
Author And Source
이 문제에 관하여(westagram | 1. Django 초기 세팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wjddk97/westagram-django-초기-세팅1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)