지금까지 Django Web Framework를 사용해 기초 API를 만들어보았다(아래 Django application의 노란색 부분). 이제 미니버전의 인스타그램인 "westagram"
구현을 통해 API개발의 핵심 구조와 개념을 숙지하고 QuerySet API에 익숙해지자!
회원가입 및 로그인 기능 구현
을 통해 데이터베이스에 데이터를 저장하고 불러올 수 있다.게시물 업로드
,게시물 보여주기
,댓글 달기 및 보여주기
를 통해POST/GET
통신을 처리할 수 있다.- 기본적인 Git flow를 이해하고
GitHub
을 통한 코드리뷰 방식을 이해하고 참여한다.- 코딩 컨벤션을 지켜 가동성 높고 협업에 도움이 되는 코드를 작성할 수 있다.
git clone 'github 주소'
git branch feature/signup # git branch 생성, 앞에 feature를 넣는 이유는 branch는 기능 별로 구현하기 때문에
git checkout feature/signup # 만든 branch로 이동, 파일 만들거나 코드 수정 시 메인이 아닌 feature branch에만 반영 됨
git add .
git commit -m "메시지" # 내가 작업한 내용 기입
git push origin feature/signup # origin 컴퓨터에 내가 만든 branch 생성 / main으로 push하면 내가 만든 작업물이 버그가 있어도 바로 적용되기 때문에 main으로 push하지 않음.
PR(pull request) 만들어 review 요청 (github site에서 작업)
- 만일 수정이 필요하면 다시 git commit
ref.
merge는 내가 한 작업을 main과 합치는 것(main으로 push)
origin
, remote
등은 GitHub
컴퓨터(사이트)를 의미한다고 생각하면 됨
git clone은 처음만 하는 거고, 한번 한 이후에는 pull
하면 된다
git pull origin main
pull
해야 함conda create -n westagram python = 3.8 # 가상환경 생성
conda activate westagram # 가상환경 활성화
pip install django # 가상환경에 django 설치
django-admin startproject wecode # 프로젝트 생성(프로젝트명: 위코드)
.gitignore
설정.gitignore
파일을 관리해야 한다. # 프로젝트 폴더 내 .gitignore 파일 생성
touch .gitignore
vi .gitignore
.gitignore에 들어가는 내용은 gitignore.io라는 웹사이트에 접속해서 vscode
, Pycharm
, Python
, Django
등을 선택하고 생성된 내용을 전체 복사해서 붙여넣기 하면 된다.
그리고 하나 더 추가해야할 사항이 있는데, 보안과 관련된 my_settings.py
도 git에 공유되면 안되기 때문에 Django 영역의 하위 부분에 추가할 것!
my_settings.py
생성 # 프로젝트 폴더 내 my_setting.py 파일 생성 및 내용 작성
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'DATABASE 명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속용 비밀번호',
'HOST': '실제 DB 주소',
'PORT': '포트번호',
}
}
SECRET = '시크릿키' # 시크릿키는 settings.py 에서 가져오기
settings.py
수정# 경로: westagram/settings.py
import my_settings # my_settings.py 내용 import
SECRET_KEY = my_settings.SECRET # my_settings.py 내용에 있는 secret key 참조
AllOWED_HOSTS = ['*']
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth', # 필요없는 것 주석처리
]
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
# 'django.contrib.auth.middleware.AuthenticationMiddleware', # 필요없는 것 주석처리
]
DATABASES = my_settings.DATABASES # my_settings.py 내용에 있는 데이터 참조
corsheaders
- cors에 대한 처리를 도와줄 플러그인 설치
pip install django-cors-headers
- settings.py 수정
# INSTALLED_APPS 안에 내용 추가
INSTALLED_APPS = [
'corsheaders',
...
]
# MIDDLEWARE 안에도 내용 추가
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware'
...
]
# 하단에 아래 내용 추가(허용할 값 정의)
#REMOVE_APPEND_SLASH_WARNING
APPEND_SLASH = False
##CORSsettings.py
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
생성requirements.txt
# pip free의 결과를 requirements.txt에 기록
pip freeze > requirements.txt
mysql server start
mysql -u root -p # MySQL 서버 접속
# 데이터베이스 생성
mysql > create database westagram(데이터베이스명) character set utf8mb4 collate utf8mbr_general_ci;
# Django, MySQL 연결 확인
python manage.py migrate