Django 맛보기 (환경설정)

Django 란?

-> Django는 보편적인 웹 개발 업무를 빠르고 쉽게 만들어주도록 설계됨.
-> Python 으로 만들어진 무료 오픈소스 웹 어플리케이션 프레임워크
-> 웹사이트를 구축할 때 필요한 비슷한 유형의 구성요소들을 갖춘 여러 프레임워크 중 하나


[ Django의 위치 및 역할과 FE, BE를 아우르는 전체적인 Flow]

Django Tutorial
[ 위 페이지에서 Django의 초기 세팅과 더불어 사용 맛보기가 가능함 ]

Django 초기 세팅

세팅 순서

1. 가상환경 생성 : 프로젝트 마다 독립적인 패키지의 관리를 위해 새로운 가상환경을 생성해 사용해야 함

conda create -n "가상환경 이름" python=3.8  <-- 생성
conda activate "가상환경 이름"   <-- 가상환경으로 진입

2. Database 생성

"가상환경이 아닌 mysql과 같은 데이터베이스 환경에서 수행"
mysql -u root -p
mysql> create database NAME character set utf8mb4 collate utf8mb4_general_ci

3. Project Python Package 설치

pip install django
"이후에 MySQL server에 접속하기 위한 package"
pip install mysqlclient
  "(M1을 사용하시는 분들은 pip install PyMySQL)"
  "(중요) mysql 설치되어 있는지 먼저 확인해주세요"

4. Django Project 생성

django-admin startproject (프로젝트 네임)
cd (작업할 프로젝트 디렉토리)

5. Settings.py

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. 마지막으로 허용할 값을 정의 하는 것으로 마무으리

6. Project Server Run

	python manage.py runserver

7. Git & Github

  • git 초기화
    - 생성한 project를 git으로 관리할 수 있도록 초기화 함
    • manage.py 가 위치한 곳으로 이동
    • ' git init ' 명령어로 git 초기화

8. .gitignore 생성

  • 소스공유를 위해 git을 사용하지만, 공유하고 싶은 것, 하고 싶지 않은 것, 하면 안되는 것들이 존재함
    -> 구분을 위해 git 이 설치된 디렉토리에 .gitignore 파일을 생성, 관리해야 함
    -> 아래 사이트에서 현재 사용하는 환경에 해당하는 키워드를 검색하면 자동으로 필요한 코드를 생성해 줌 dang, awesome!
    https://www.toptal.com/developers/gitignore
    -> ex> python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh
    -> Create 하여 나온 내용을 .gitignore 에 paste
cd "프로젝트 폴더명"
touch .gitignore
vi .gitignore
* 검색 결과 추가 후 가장 하단에 'my_settings.py' 도 추가하기
-> 보안 관련 파일은 github 에 업로드 하면 안됨!
-> **_5번 순서의 d 항 참조_**

9. add & commit

	git add .
    	git commit  -m "Add: Django Project Setting"
  • 이 다음은 git remote, git push 등이 있으나, 그정도는 미리 알고 오기

10. Branch & Application 생성

(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)

좋은 웹페이지 즐겨찾기