Django project setting

최창환·2022년 3월 15일
0
post-thumbnail

가상환경 생성

# 가상환경 생성
conda create -n "가상환경 이름" python=3.8
conda activate "가상환경 이름"

가상환경은 자신이 원하는 python환경을 구축하기 위해 필요한 모듈만 담아놓는 바구니같은 개념이라고 할 수 있다. 따라서 독립적인 환경을 만들어서 작업할 수 있는데 다른 컴퓨터 혹은 다른 환경에서 동일 프로그램을 실행시킬 때, 작업 환경을 고정시켰기 때문에 해당 환경에 맞게 구성하면, 작업환경과 버전 문제로 실행되지 않는 문제를 방지할 수 있다.

Database 생성

$ mysql -u root -p

mysql> create database NAME character set utf8mb4 collate utf8mb4_general_ci;

project에서 사용할 database를 생성한다. 내 경우에는 mysql실행시 다음의 에러가 발생해서

# mysql 데몬 재실행
sudo /etc/init.d/mysql restart
sudo mysql -u root -p

이 방식으로 mysql에 접속하고 있다.
일단 mysql에 접속할 수 있어서 이 문제를 뒤로 미뤄놓은 상태이지만 시간이 남으면 얼른 이 문제를 해결해야겠다. -_-;;


Package 설치

$ pip install django

# 이후에 MySQL server에 접속하기 위한 package
$ pip install mysqlclient

Framework인 django를 설치한 다음 mysqlclient를 설치하여 mysql서버에 접속할 수 있도록 한다.


Django Project 생성

django-admin startproject 프로젝트명

cd 프로젝트명

다음의 코드로 django project를 생성하고 프로젝트명의 디렉토리로 이동한다.


Settings.py

ALLOWED_HOSTS = ['*']
# Application definition

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

모든 요청을 받아들일 수 있도록 ALLOWED_HOSTS를 설정하고 admin, csrf, auth기능은 사용하지 않기때문에 각각 주석처리를 해준다.

from django.urls import path

urlpatterns = [
]

또한 프로젝트명/urls.py도 admin기능을 제거하여 다음과 같이 수정한다.

my_settings.py 생성 (DATABASES, SECRET_KEY)

# 프로젝트명 디렉토리인지 현재 위치 확인
touch my_settings.py 

별도의 참조용 파이썬 파일(my_settings.py)을 생성해서, 참조하는 방법을 이용해 SECRET_KEY, DATABASE 등의 보안정보들을 공유하지 않도록 한다.

# my_settings.py

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 를 사용합니다.

생성한 my_settings.py에 DB정보와 SECRET_KEY를 입력한다.

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

...

DATABASES = DATABASES

SECRET_KEY = SECRET_KEY

my_settings.py를 settings.py와 연동시켜 django가 인식할 수 있도록 다음의 코드를 추가한다.


corsheader

p install django-cors-headers

corsheader를 설치하여 Cross Domain이슈를 방지할 수 있도록 한다. 참조

INSTALLED_APPS = [

...
    'corsheaders'
]

MIDDLEWARE = [

...
'corsheaders.middleware.CorsMiddleware',
...
]

설치된 패키지를 사용하기 위해서 settings.py의 INSTALLED_APP과 MIDDLEWARE에 추가한다.

APPEND_SLASH = False

마지막으로 다음의 코드를 추가해 /관련 에러를 제거한다.

서버 실행

python manage.py runserver

세팅이 전부 끝나면 서버가 제대로 돌아가는지 확인하는 작업을 한다.


Git & Github


**manage.py가 위치한 디렉토리**에서 git으로 관리할 수 있도록 초기화 해준다.
git init

gitignore

Git을 사용할 때 공유해서는 안되는 보안정보들이 존재하는데 이를 구분하기 위해 gitignore파일을 생성해서 관리해준다.

gitignore.io사이트에서 사용하는 환경의 키워드를 작성하면 자동으로 .gitignore파일에 정의할 코드를 생성한다.
ex) python, pycharm, VisualStudioCode, vim, macOS, Linux, zsh...

touch .gitignore

먼저 gitignore파일을 만들고

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

# 가장 하단 my_settings.py 추가하기
my_settings.py

gitignore사이트에서 키워드를 Create 하여 나온 내용을 붙여넣는다. 그리고 또다른 보안파일인 my_settings.py도 추가해준다.

add & commit

git add .
git commit -m "Add: Django Project Setting"

Github repository 새로 생성 후

# default branch master -> main
git branch -M main 

# remote 추가
git remote add origin "repository주소"

push

git push origin main

완료된 초기 셋팅을 main branch github에 push해준다.

profile
포기하지 않는 개발자

0개의 댓글