Django Project Setting

Jungmin Seo·2021년 6월 20일
0

Django

목록 보기
1/4

Miniconda와 SQL을 설치한 이후, 장고 프로젝트 초기 세팅 + 깃 연동 순서이다.

Django Project 초기 세팅

1. 가상환경 생성

# 가상환경 생성
conda create -n 가상환경이름 python=3.8 (파이썬버전 꼭 추가해주기, 3.8이 안정적이다)
conda activate 가상환경이름

2. Database 생성

$ mysql -u root -p

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

3. Project Python Package 설치

$ pip install django (최신버전으로 설치할거라, 별도로 버전 명시 안함)

# 이후에 MySQL server에 접속하기 위한 package
$ pip install mysqlclient
  (중요) mysql 설치되어 있는지 먼저 확인해주세요

3-1 Ubuntu 20.04에서 처음 sqlclient를 설치하려는데 오류가 날 경우

아래 과정을 순서대로 실행한다.
어떤 분이 몇시간을 고생해서 알아내주신 덕분에 나도 오류를 해결할 수 있었다.
(두번째로 가상환경을 만들었을 땐, 아래 과정 없이 pip install mysqlclient에 성공했다.)
Thanks to:
https://askubuntu.com/questions/1321141/unable-to-install-mysqlclient-on-ubuntu-20-10

#Step0
sudo apt install python3-dev build-essential

#Step1
sudo apt install libssl1.1

#Step2
sudo apt install libssl1.1=1.1.1f-1ubuntu2

#Step3
sudo apt install libssl-dev

#Step4
sudo apt install libmysqlclient-dev

#Step5
pip3 install mysqlclient

4. Django Project 생성

# !! 프로젝트를 생성할 디렉토리로 이동한 후 실행한다 !! (ex. Desktop)
$ django-admin startproject westarbucks .
$ cd westarbucks

5. Settings.py 설정

5-1 IP 허용

# 우선 모든 Host 허용
ALLOWED_HOSTS = ['*']

5-2 주석처리 (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',
]

(!!중요!!)추가로 westarbucks22/urls.py를 아래와 같이 수정한다.

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),
]

위에서의, admin site로의 path를 삭제하여, 아래처럼 수정한다.

from django.urls import path

urlpatterns = [
]

5-3 my_settings.py 생성 (DATABASES, SECRET_KEY)

  • django의 settings.py 안에 존재하는 내용 중 DATABASE, SECRET_KEY 등은 소스로서 공유해야 하는 내용이 아니므로, 별도의 파일 혹은 환경변수로서 관리하는게 좋다.
  • 별도의 참조용 파이썬 파일(my_settings.py)을 생성해서 참조한다.
cd '생성한 프로젝트 폴더명'
touch my_settings.py
# my_settings.py

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

SECRET_KEY = '시크릿키'
# my_settings.py를 참조하는 settings.py

# settings.py

from . import my_settings    # settings.py와 같은 디렉토리 안에 있는 경우

SECRET_KEY = my_settings.SECRET_KEY
DATABASES = my_settings.DATABASES

5-4 corsheaders

pip install django-cors-headers

설치 후, settings.py 안에 아래 내용들을 모두 추가한다.

INSTALLED_APPS = [
...
		'corsheaders'
]

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',
		#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가하면 됩니다.
)

Git & Github

1. Django 프로젝트 생성 후 검증

python manage.py runserver

아래처럼 보인다면 정상작동 한다는 의미이다.

2. Git 초기화

2-1 git init

생성한 장고 프로젝트를 git으로 관리할 수 있도록 초기화한다.

  • (중요) !! manage.py가 있는 디렉토리로 이동 !!
  • git init 명령어로 git 초기화
git init

2-2 .gitignore 생성

https://www.toptal.com/developers/gitignore

올리고 싶은, 올리고 싶지 않은, 올려서는 안되는 소스가 존재한다.
이를 구분하기 위해 git이 설치된 디렉토리에 .gitignore 파일을 생성해서 관리한다.
위 사이트에서 아래 키워드를 추가하여 .gitignore파일에 정의할 요소들을 생성하여 파일에 붙여넣는다.

python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh

cd 프로젝트 폴더명git push origin main
touch .gitignore
vi .gitignore

############################
# gitignore.io 결과 전체 복사 #
############################

아래 두가지 추가
my_settings.py (보안 관련 파일은 github에 업로드되면 안됩니다.)

2-3 git add & commit

# commit 할 사항들을 저장
git add .
# commit
git commit -m "Add: -Django Project Setting"    # -m "commit comment" 달기

3. Git Repository 생성 & 로컬 프로젝트 연동

3-1 Github repository 생성

github 웹사이트에서 새로운 repository를 생성한다.

3-2 내컴퓨터 Git - Github의 Repository 연동

  • Default Branch 변경 (master > main)
git branch -M main
  • Github Repository remote 추가
git remote add origin "repository 주소"
  • Push
git push origin main    # 여기서 main은 branch 이름

Branch 생성

1. Branch & Application 생성

1-1 Branch 생성

브랜치를 생성 & 이동
브랜치 이름은 feature/crud로 하겠다.

git branch 브랜치 이름 # 브랜치 생성
git checkout 브랜치 이름 # 해당 브랜치로 이동 

# 생성과 동시에 이동하는 방법
git checkout -b 브랜치 이름

1-2 Application 생성

  • Application 생성
$ python manage.py startapp app이름    # app이름은 products로 하기로 한다
  • settings.py 내 INSTALLED_APPS에 추가
# settings.py

INSTALLED_APPS = [
	...
	'products', 

1-3 Github Push

  • git add & commit
git add .
git commit -m "Add: products application"

-Github repository branch push

git push origin "브랜치 이름"

Database 작성하기

1. Database 작성

products/models.py 작성하기

2. models.py 작성 내용을 DB에 적용

2-1 makemigration

models.py에 작성한 python code를 database에 적용하기 위한 migration 파일(설계도)를 만드는 과정

python manage.py makemigrations app이름

2-2 migrate

makemigration으로 생성한 migration 파일(설계도)을 database에 적용

python manage.py migrate

3. MySQL 데이터 확인

MySQL 접속

mysql -u root -p

Database 확인 & 선택

SHOW databases;  # database 확인
USE database_name;  # 사용할 데이터베이스 선택

Table 확인 & table 정보 확인

SHOW tables;  # table 확인
DESC table_name;  # 해당 table의 정보 확인

원하는 table의 data 확인

SELECT * FROM table_name  # 해당 table의 모든 데이터 확인

Github에 push & Pull request(PR) 날리기

1. feature/crud 브랜치 push

git add . 
git commit -m "커밋 메시지"
git push origin feature/crud

2. Pull request

Github 웹사이트로 가서, feature/crud → main 브랜치로 pull request를 날린다.

profile
Hello World!

0개의 댓글

관련 채용 정보