[DJANGO] 초기 셋팅

11895 단어 djangodjango

벌써 위코드 3주차! 벌써 수요일이다. 공부할 양은 많음에도 시간은 야속하게도 너무 빨리 가는 듯하다.😿
이제 막 이가 자라나는 중이라 이것저것 씹어보게 된다. 과제를 진행하다보면 궁금한 것들이 생기고, 지나칠 법도 한데 자꾸 거기에 묶여서 진도를 나가기가 힘들다. 그래도 이게 다 자산이 되겠거니.. 생각해본다.

오늘은 장고를 시작할 때 초기셋팅에 대해서 포스팅 해보려 한다.


1. Django Project

(1) 가상환경 생성

미니콘다, mysql, 터미널 등등... 프로그램을 받는 것은 건너 뛰고 시작을 해보자.

장고를 시작하기에 앞서 필자가 입력한 $, mysql> 부분은 프로그램에서 자동으로 나오는 부분이니 없다 생각하고 뒤에 명령어만 보면 된다.

가장 먼저 해야할 것은 가상환경 생성이다. 이는 터미널로 생성할 수 있다.
이 가상환경은 독립적인 패키지의 관리를 위해 사용하는 것으로 프로젝트마다 새로운 가상환경을 생성해주는 것이 좋다.

$ conda create -n wecode python=3.8  
# wecode = 프로젝트 이름, python=python 버전
$ conda activate weode
# 가상환경 활성화

python version의 경우 각 프로젝트별로 맞는 버전을 입력해주면 되고, 위코드에서 진행되는 것들은 3.8 을 사용하면 된다고 한다. 필자같은 경우엔 자꾸만 실수를 하게 되는 부분이 있었는데 그것이 무엇인고 하니..
python = 3.8 .. 띄어쓰기가 습관이 되어버렸다. 여기엔 띄어쓰기가 들어가면 안 된다.

(2) Project Python Package 설치

  • jdnago packagee설치
$ pip install django
# 장고 설치

$ pip install mysqlclient
# 이후에 MySQL에 접속하기 위한 package
# -> MySQL이 설치되어 있는지 먼저 확인하는 것이 중요함!
# 혹시 "gcc" 라는 에러가 발생한 경우 (Mac)

$ xcode-select --install
# 설치가 완료 됐다면 다시 위의 mysqlclient 설치

$ pip install django-cors-headers
# corsheaders 설치

xcode는 개발환경 구성을 위한 커맨드라은 도구를 포함하고 있다.
이를 설치하는 것은 번거롭기 때문에 명령어라인 도구만 설치를 한다. 이렇게만 설치를 해도 시간이 꽤나 걸리게 된다.
이에 관한 설명이 좀 더 필요하다면 xcode를 눌러보자.

(3) 데이터베이스 생성

이렇게 만든 가상환경을 실행을 하고 나면 데이터 베이스를 실행해준다.
이 데이터베이스는 계속 사용하고 볼 것이기 때문에 창을 따로 열어서 해주면 좋다. 커맨드 + D 를 누르면 창이 분할되어 하나 더 생긴다.
이렇게 분할시킨 터미널 내에서

$ mysql.server start
# mysql server를 켜준다.

$ mysql -u root -p
# mysql 시작  -u = user, -p = password

여기까지 하게 되면 비밀번호를 입력하라고 뜬다.

Enter password:

이 때 네트워크에 지정된 비밀번호를 입력하여 접속을 한 후에 데이터베이스를 생성해주면 된다.

mysql> CREATE DATABASE wecode_assignment CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
# wecode_assignment 부분은 생성하고자하는 데이터베이스 이름

이렇게 생성된 데이터베이스는 어떻게 볼 수 있는가?

mysql> SHOW databases;


혹시라도 아래와 같은 상황이 일어났다면 여기를 참고해보자

이 데이터베이스를 사용하겠다는 명령어는 간단하다.

mysql> USE wecode_assignment

설명하지 않아도 보이는 것 그대로 wecode_assignment라는 저장공간을 사용하겠다는 말이다.

(4) Django Projects 생성

데이터베이스까지 완료가 되었다면 장고 프로젝트를 생성해주어야한다.
이 때 선택사항으로 폴더를 하나 만들고 그 안에 .을 붙여서 프로젝트를 만들어주면 좋다.

$ midir project && cd project 
# project 라는 폴더를 만들고 그 폴더로 바로 진입한다.

$ django-admin startproject assignment .
# 생성된 폴더 안에 assignment 라는 이름의 프로젝트를 만든다.
# .이 없으면 assignment라는 이름의 폴더 안에 assignment라는 폴더가 또 생김

$ ls
# assignment 라는 이름의 폴더가 잘 만들어졌는지 확인한다.

$ cd assignment
# assignment 폴더로 들어간다.

(5) Settings

assignment가 생성이 잘 됐고 잘 들어갔다면 안에 Settings.py라는 파일이 만들어져 있을 것이다.
이 파일은 터미널 내에서 열어도 되고 그냥 vscode로 열어도 된다. 어느쪽이든 본인이 편한 것을 선택하면 된다. 터미널의 기본 명령어가 기억이 안 난다면 확인해보자.
vscode에서 연다면 그냥 vscode를 실행시키고 폴더를 열어도 되고,
vscode 내에서 커맨드 + shift + P를 누르고 >install code를 입력하고 클릭하면 설치가 되는데, 이 후에 터미널에서 원하는 폴더까지 들어간 후 $ code 원하는 파일 혹은 폴더명을 입력하면 vscode로 열리게 된다.

필자의 경우는 $ code . 을 사용한다.

  • IP 허용
ALLOWED_HOSTS = []  ->  ALLOWED_HOSTS = ['*']
# 호스트를 모두 허용해준다.

  • 주석처리 + 내용추가
INSTALLED_APPS = [
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders' # 추가부분
]

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',
    'corsheaders.middleware.CorsMiddleware', #추가부분
] 
...
# 추가부분
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',
)

admin 부분은 사용하지 않을 것이기 때문에 주석처리 하였다.
corsheaders를 설치하였기 때문에 해당 내용들은 추가해준다.


  • assignment/urls.py
from django.urls import path

urlpatterns = [

]

기본으로 설정되어 있던 admin 부분은 사용하지 않을 것이기 때문에 삭제한다.

  • my_settings.py 생성
    이 my_settings.py 안에는 장고 설정에 존재하는 내용 중 보안성이 있거나, 공유되면 안 되는 내용들을 넣어준다. 파일명은 상의하여 정하면 되고, 이는 후에 깃허브에 올리지 않고, 같이 일하는 팀원끼리 개인적으로 공유가 되어야한다.

기존에 생성했던 폴더인 project 안에 파일을 만들어준다.

DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DATABASE 명',
        'USER': 'DB접속 계정명',
        'PASSWORD': 'DB접속용 비밀번호',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
SECRET_KEY = 'settings.py에 있는 SECRET_KEY 부분 복사`

  • settings.py ↔ my_settings.py 연동

settings.py 에서 작업

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

...

DATABASES = DATABASES

SECRET_KEY = SECRET_KEY

  • 프로젝트 서버실행
python3 manage.py runserver

혹시 오류가 뜬다면 manage.py 파일이 있는 폴더에 위치해 있는지, 오타가 있는 것은 아닌지 확인해보자.

좋은 웹페이지 즐겨찾기