-> Django는 보편적인 웹 개발 업무를 빠르고 쉽게 만들어주도록 설계됨.
-> Python 으로 만들어진 무료 오픈소스 웹 어플리케이션 프레임워크
-> 웹사이트를 구축할 때 필요한 비슷한 유형의 구성요소들을 갖춘 여러 프레임워크 중 하나
[ Django의 위치 및 역할과 FE, BE를 아우르는 전체적인 Flow]
Django Tutorial
[ 위 페이지에서 Django의 초기 세팅과 더불어 사용 맛보기가 가능함 ]
conda create -n "가상환경 이름" python=3.8 <-- 생성 conda activate "가상환경 이름" <-- 가상환경으로 진입
"가상환경이 아닌 mysql과 같은 데이터베이스 환경에서 수행" mysql -u root -p mysql> create database NAME character set utf8mb4 collate utf8mb4_general_ci
pip install django "이후에 MySQL server에 접속하기 위한 package" pip install mysqlclient "(M1을 사용하시는 분들은 pip install PyMySQL)" "(중요) mysql 설치되어 있는지 먼저 확인해주세요"
django-admin startproject (프로젝트 네임) cd (작업할 프로젝트 디렉토리)
a. IP 허용 ALLOWED_HOSTS = ['*'] b. 주석처리 (admin, csrf, auth) INSTALLED_APPS = [ # 'django.contrib.admin', # 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', '(newProjectDirName)' ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.midleware.csrf.CsrfViewMiddleware', # 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptinosMiddleware', ] - 주석 처리가 된 부분은 좀 더 기본적인(pure)한 환경을 구축하기 위함임 - 숙련이 되고 나면 굳이 주석처리를 할 필요는 없음 c. [추가] (새 프로젝트)/urls.py 를 아래와 같이 수정 from django.urls import path urlpatterns = [ ] d. my_settings.py 생성(DATABASES, SECRET_KEY 보관) - 이 파일의 생성 이유는 github에 연동할 때 보안상의 문제가 발생할 수 있는 정보들을 따로 모아 관리하기 위함임(프로젝트 폴더 바로 아래에 생성하면 된다) cd '생성한 프로젝트 폴더명' touch my_settings.py DATABASES = { 'default' : { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DATABASE 명', * New Database 생성 후 해당 Name과 일치해야 함 'USER': 'DB접속 계정명', <-- 임의 설정 'PASSWORD': 'DB접속용 비밀번호', <-- 임의 설정 'HOST': '127.0.0.1', 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'} } } SECRET_KEY = '시크릿키' * settings.py에 있는 secret_key 사용 e. settings.py <> my_settings.py 연동 from pathlib import Path "기존 sttings.py에 있는 code" from my_settings import DATABASES, SECRET_KEY ... DATABASES = DATABASES SECRET_KEY = SECRET_KEY e1.[별첨] Mac M1 mysql setting pip install PyMySQL * pymysql package 설치 후 settings.py에 추가 from pathlib import Path #기존에 settings.py 에 있는 코드 from my_settings.py import DATABASES, SECRET_KEY import pymysql pymysql.install_as_MySQLdb() f. corsheaders 설치 - 서로 다른 기기들과 원격의 웹서버를 통해서 호환이 되어야 하는데, 이때 발생할 수 많은 에러를 잡아주기 위한 모듈 패키지 pip install django-cors-headers * 설치 후 settings.py > INSTALLD_APPS에 추가해야 인식 가능 INSTALLED_APPS = [ 'corsheaders' ] * MIDDLEWARE 마찬가지 MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', ] * CORS 추가 설정(settings.py 의 맨 밑바닥에 추가하면 ok) ##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', ) g. 마지막으로 허용할 값을 정의 하는 것으로 마무으리
python manage.py runserver
cd "프로젝트 폴더명" touch .gitignore vi .gitignore * 검색 결과 추가 후 가장 하단에 'my_settings.py' 도 추가하기 -> 보안 관련 파일은 github 에 업로드 하면 안됨! -> **_5번 순서의 d 항 참조_**
git add .
git commit -m "Add: Django Project Setting"
(1) Branch 생성
- feature/crud 브랜치 생성 & 이동
> git branch (브랜치 이름) <-- 브랜치 생성
> git checkout (브랜치 이름) <-- 해당 브랜치로 이동
* 생성과 동시에 이동하는 꿀팁
> git checkout -b (브랜치 이름)
(2) Application 생성
- settings.py 설정 후 app 생성
> python manage.py startapp (생성할 app 이름)
- settings.py > INSTALLED_APPS 추가
> INSTALLED_APPS = [
'PRODUCTS'
]
(3) Github Push
- git add & commit
> git add .
> git commit -m "Add: (app 네임)" <-- commit 이니까 임의 작성 가능
- Github repository bransh push
> git push origin "브랜치 이름"
[ 알아두면 편한 명령어 ]
pip freeze : 현재 환경에서 설치 된 프로그램의 목록 출력 makemigration [이 두 문장은 항상 붙어 다닌다] migrate [이 두 문장은 항상 붙어 다닌다] git remote -v : origin git 주소를 확인 git branch * github에서 main이 기본값이 되어야 한다(브랜치 이동 -> main)