<Django/Python>프로젝트 초기Setting_TIL

은경·2021년 10월 19일
2

익히는게 너무 어렵고 험난했던 과정 .. 지금도 잘 아는건 아니지만
다음에 편하게 보고 참고하려고 작성한다.

원하는 디렉토리로 이동 후 프로젝트 시작-

1. 가상환경 설정

  • conda 가상환경 목록보기 : conda env list

  • conda 가상환경 만들기 : conda create -n "가상환경이름" python=3.8(버전이름)

  • conda 가상환경 활성화 : conda activate "가상환경이름" <-여기까지 초기셋팅

  • conda 가상환경 비활성화 : conda deactivate

  • conda 가상환경 삭제 : conda env remove -n "가상환경이름"

  • conda 가상환경 익스포트 : conda env export> "가상환경이름.yaml"

  • conda 익스포트->임포트 : conda env create -f "가상환경이름.yaml"

2. 새 가상환경에 설치 해야할 것

  • pip install django

  • pip install PyMySQL (맥 M1)

  • pip install django-cors-headers

  • pip freeze 명령어를 이용해서 잘 설치되었는지 확인

3. DATABASE 생성

  • mysql.server start

  • mysql -u root -p

  • mysql> create database "데이터베이스이름" character set utf8mb4 collate utf8mb4_general_ci;

프로젝트이름과 가상환경이름을 같게 맞춰줄것

4. Django 프로젝트 생성

  • django-admin startproject 프로젝트 이름

  • cd 프로젝트이름 (폴더 이동)

5. Settings.py 설정

  • IP허용
- ALLOWED_HOSTS = ['*']
  • 주석처리

2번에서 pip install django-cors-headers 설치시

  • settings.py에 INSTALLD_APPS과 MIDDLEWARE 안에 추가 사항
    INSTALLED_APPS = [
    			'corsheaders'
    ]
    MIDDLEWARE = [
    		'corsheaders.middleware.CorsMiddleware',
    ]
  • CORS 추가 설정
##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',
)
  • 추가적으로 프로젝트이름/urls.py 수정(admin 삭제)

6. my_settings.py 생성

  • SECRET_KEY, DATABASE등은 따로 관리 (공유X)

  • 생성한 프로젝트 폴더로 이동후 (cd)

  • touch my_settings.py

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명', # 예시) 'root',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
		'OPTIONS': {'charset': 'utf8mb4'}
    }
}

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

이후 settings으로 되돌아가서 my_settings와 연동

맥OS M1 pymysql 설치 기준

from pathlib        import Path #기존에 settings.py 에 있는 코드
from my_settings.py import DATABASES, SECRET_KEY

import pymysql

pymysql.install_as_MySQLdb()
...

DATABASES = DATABASES

SECRET_KEY = SECRET_KEY

예시)

7. 프로젝트 서버 실행

서버 동작을 통한 오류 검증
터미널을 3분할 하여 mysql / 입력 / 서버동작 용도로 사용하면 편리

python manage.py runserver

8. Git 생성

생성한 프로젝트를 git 으로 관리하기 위해 manage.py가 위치한 곳으로 이동

  • git init : git 초기화

  • .gitignore : 파일 작성 (공유하지 않을 소스 관리)

참고 사이트 ) gitignore.io
키워드 예시 ) python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh

cd '프로젝트 폴더명'
touch .gitignore
vi .gitignore
############################
# gitignore.io 결과 전체 복사 #
############################
가장 하단 my_settings.py 추가하기
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)
  • git add . : 초기셋팅 완료 후 add

  • git commit -m "ADD: 프로젝트이름 초기셋팅(예시)" : commit 남기기

8-1 Git Repository 생성 후 연동

  • git hub에 '프로젝트이름' repository 생성 (추가설정 모두 체크해제)

  • git remote add origin repository 주소 :
    로컬(Django)프로젝트 와 github repository 연동

  • git push origin main #여기서 main은 branch 이름 :
    초기셋팅 완료 후 main 브랜치 깃허브에 push

9. Branch 생성

  • git branch 브랜치 이름 : 브랜치 생성

  • git checkout 브랜치 이름 : 해당 브랜치로 이동

  • git checkout -b 브랜치 이름 : 생성 후 이동

10. Application 생성

  • python manage.py startapp 프로젝트이름 : settings.py 설정완료 상태에서

  • settings.py installed_apps 추가

    # settings.py
    
    INSTALLED_APPS = [
    	...
    	'project', 

10-1. Github Push

  • git add .

  • git commit -m "Add:커밋할 멘트(예시)" : 초기셋팅 커밋

  • git push origin 브랜치 이름 : Github repository branch push

11. Models.py

  • models.py 작성 : mysql에 모델링한 데이터베이스 작성

  • models.py 작성한 내용을 DB에 적용하기 위해 (makemigrations)설계도를 만듬
    models.py 내용이 수정될 때 마다 새로 마이그래이션 해주어야 한다.

python manage.py makemigrations app이름
  • migrat makemigrations 로 생성한 파일을 데이터베이스에 적용함
python manage.py migrate

12. View.py & urls.py 작성

  • touch urls.py : urls 파일 생성 후 작성 (프로젝트 디렉토리 안에)
  • 가상환경 디렉토리 안에(main urls.py), 프로젝트 디렉토리 안에 총 2개의 urls 존재

예시 )

(메인최상위/urls.py)

from django.urls import path, include

urlpatterns = [
        path('owners', include('owners.urls'))
]
(앱이름/urls.py)

from django.urls import path
from .views import OwnerView, DogView

urlpatterns = [
        path('/owner', OwnerView.as_view()),
        path('/dog', DogView.as_view())
]

13. DATA Table

  • httpie(client)로 django server에 요청 보내기
http -v POST 127.0.0.1:8000/product name='이름' birth='생년월일' job='학생'
  • Get 메소드로 httpie(client)로 django server에 요청 보내기
http -v GET 127.0.0.1:8000/products
  • Django shell에 진입해 직접 자료를 입력할 수도 있음

14. MySql

  • mysql -u root -p : mysql 접속

  • SHOW database : 데이터베이스 확인

  • USE database_name : 사용할 데이터베이스 선택

  • SHOW tables : 테이블 확인

  • DESC table_name : 테이블 정보 확인

  • SELECT * FROM table_name : 해당테이블 모든데이터 확인

15. Git push & Pull request(PR)

git add . 
git commit -m "커밋 메시지"
git push origin 작업했던브랜치이름

작업한브랜치→ main 브랜치로 pull request
가지를 합치는 것



내가 헷깔리지 않게 한곳에서 보기위해 정리해 보았다.
커맨드도 외우고 얼른 프로세스를 눈에 익혀야겠다 !

profile
Back-end 개발자

0개의 댓글