TIL31 - Starbucks with Django(1/3)

Kiyong Lee·2021년 9월 11일
0

Django

목록 보기
5/35
post-custom-banner

Starbucks with Django


1. 가상환경 세팅

스타벅스 모델링 후, 그에 대한 장고 프로젝트를 생성해서
간단하게 CRUD 작업을 할 예정이다.

그래서 그에 따른 작업환경을 세팅해줘야 한다.

1. conda create -n v_westar
가상환경을 설정해주기 위한 명령어로써, v_westar라는 가상환경 생성
중간에 계속 진행할거냐는 질문인 Proceed ([y]/n)? 질문에 y라고 입력한다

2. conda deactivate
지금 현재 base라는 가상환경에 있는데, 해당 가상환경에서 나가기 위한 명령어
가상환경을 바꾸기 전 deactivate 꼭 하자

3. conda activate v_westar
내가 방금 만든 가상환경 v_westar를 활성화 시키겠다는 명령어


2. pip install ?

pip install django
pip install mysqlclient

mysqlclient는 파이썬에서 mysql 서버와 통신 할 수 있게 해주는 커넥터 개념임


3. DB setting

스타벅스 모델링을 통해 CRUD 작업을 할 데이터베이스를 생성해줘야 한다.

1. mysql -u root -p
mysql에 접속을 위한 명령어


2. create database v_westar character set utf8mb4 collate utf8mb4_general_ci;
데이터베이스 생성을 위한 명령어


3. use v_westar
show databases를 통해 데이터베이스가 만들어진 걸 확인하고,
user 데이터베이스명을 통해 이 데이터베이스를 사용할거라고 선언한다


4. Start Django Project

장고 프로젝트를 만들기 위한 디렉토리로 이동하여 아래 명령어 입력

django-admin startproject v_westar

v_westar라고 만들면 내부에 같은 이름의 폴더가 생겨서 관리가 되는데,
가끔 그렬 경우 충돌이났었다.

그래서 최상위 v_westar -> v_westars로 이름만 바꿔주었다

mv v_westar v_westars
: v_westar의 디렉토리명을 v_westars로 변경

code .
: 해당 디렉토리를 vscode로 열 수 있는 명령어이다.


5. my_settings.py 생성

최초 설치된 폴더의 settings.py에 가면 해당 프로젝트에 대한
기본 세팅 값들을 볼 수 있다.

그런데 데이터베이스와 SECRET KEY는 변수로 가지고 있는 게 아닌,
관리 파일을 따로 만들어서 관리하는 것이 보안에 좋으며

나는 my_settings.py라는 파일을 만들어 해당 값들을 저장할거다.

그 전에, VSCODE를 켰으니 이제 터미널은 닫고 VSCODE 터미널에서 입력하자

가상환경도 내가 만든 v_westar로 바꿔주고 my_settings.py를 만들었다

settings.py에 들어가면 있는 SECRET_KEY는 복사해서 붙여넣어주자

그래서 my_settings.py 의 내용을 입력해보면

MY_SECRET_KEY = 'django-insecure-35%+21*o4hfajw6)v9q*puz%*j4o+p3q9jughkae)wmn*3p(fi'

MY_DATABASE = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'v_westar', #데이터베이스명
        'USER': 'root', #DB접속 계정명
        'PASSWORD': 'k3dasd1', #mysql 로그인 할 때 쓰는 DB접속용 비밀번호
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

이 되고 settings.py에 해당 파일을 import 하여
DATABASE와 SECRET_KEY에 넣어주고, 그 외 세팅들도 아래처럼 해보자

6. settings.py

from my_settings import *

....

SECRET_KEY = MY_SECRET_KEY
...
ALLOWED_HOSTS = ['*']
...

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',
]
...


그리고 urls.py도 아래와 같이 수정하자
from django.urls import path

urlpatterns = [
]

그리고 M1을 쓰는 사람의 경우, PyMySQL을 설치해야 한다.

pip install PyMySQL

또한 corsheaders 를 설치하여 서로 다른 서버에서도 원활히 접속할 수 있게 해주자

pip install django-cors-headers

설치한 걸 settings.py에 적용시켜야 세팅 끝!

import pymysql
...
pymysql.install_as_MySQLdb()
...
INSTALLED_APPS = [
    'corsheaders', #개인적으로 맨위에 쓰는 걸 추천
    ...
]
...
MIDDLEWARE = [
    #이거도 맨 위에 쓰는 거 추천
    'corsheaders.middleware.CorsMiddleware',
    ...
]
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-crsftoken',
    'x-requested-with',
)

모든 세팅이 완료된 후 실행했을 때 이렇게 뜨면 성공

profile
ISTJ인 K-개발자
post-custom-banner

0개의 댓글