[TIL] 프로젝트 초기설정

양희연·2020년 6월 19일
0

Django

목록 보기
6/14
post-thumbnail

0️⃣ 프로젝트 가상환경 만들기

(base) $ conda create -n project python=3.8
(project) $ conda activate project



1️⃣ 가상환경에 django 설치

(project) $ pip install django

💡 requirements.txt
프로젝트에 필요한 라이브러리를 모아둔 텍스트 파일

#requirements.txt 작성
pip freeze > requirements.txt
#requirements.txt에 있는 라이브러리 설치
pip install -r requirements.txt



2️⃣ django project 만들기

(project) $ django-admin startproject project



3️⃣ git ignore

소스를 공유하기 위해 깃을 사용하지만 올리고 싶은 것 올리고 싶지 않은 것, 올려서는 안되는 것들이 존재한다. 이를 구분하기 위해 깃이 설치된 디렉토리에 .gitignore 파일을 생성해서 관리해야 한다.

(project) $ vi .gitignore

gitignore 사이트에서 "django, python, macOS" 키워드에 해당하는 결과물을 복사해 .gitignore 파일에 저장해준다.



4️⃣ project/settings.py

사용하지 않는 요소들 주석 처리

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

언어와 시간대 변경

LANGUAGE_CODE = 'ko'
TIME_ZONE = 'Asia/Seoul'



5️⃣ django-cors-headers

(project) $ pip install django-cors-headers

설치 후 project/settings.py에 installed_apps와 middleware에 추가

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',        #추가
 ]

project/settings.py 끝부분에 아래 내용을 추가

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



6️⃣ my_settings.py

settings.py에 존재하는 내용 중 SECRET_KEY, DATABASE 등은 소스로서 공유해야 하는 파일이 아니므로, 별도의 파일 혹은 환경변수로서 관리하는 게 좋다.

(project) $ vi my_settings.py
DATABASES = {
    'default' : {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'project',              #데이터베이스명, 프로젝트명(django-admin)
        'USER': 'root',                 #DB접속 계정명
        'PASSWORD': '',                 #DB접속용 비밀번호
        'HOST': 'localhost',            #실제 DB 주소
        'PORT': '3306',                 #포트번호, mysql의 기본포트는 3306
    } 
} 

SECRET = { 
    'secret':'',
}

ALGORITHM = 'HS256'

settings.py 부분도 위 사항에 맞게 수정해준다.

import my_settings

SECRET_KEY = my_settings.SECRET['secret']
ALGORITHM = my_settings.ALGORITHM

#ip 주소 확인 명령어
#ifconfig en0 | grep inet | grep -v inet6 | cut -d ' ' -f2
ALLOWED_HOSTS = ["*", "자신ip주소", "자신ip소:8000"]

DATABASES = my_settings.DATABASES

마지막으로 .gitignore에 추가해준다.



7️⃣ mysqlclient 설치

(project) $ pip install mysqlclient



8️⃣ admin url 삭제

admin을 주석처리 했으므로 project/urls.py 에서 해당 내용을 삭제해준다.



9️⃣ 데이터베이스 생성

mysql -u root -p
#create database DB명
mysql> CREATE DATABASE DB명 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;



🔟 서버 실행

같은 네트워크를 공유하고 있는 다른 컴퓨터에서 접속하고 싶을 때 서버 실행하는 법

./manage.py runserver 0:8000

🌏 다른 컴퓨터에서 http://ip주소:8000 로 접속하면 된다.

profile
꾸준히 나아가자!

0개의 댓글