Python&Django 프로젝트 초기 설정

dev-swd·2020년 10월 29일
0

Python&Django

목록 보기
1/4
post-thumbnail

Python&Django 초기 설정 순서 정리

  • 가상환경 miniconda 설치가 되어있다는 가정하에
  • mysql 이 설치가 되어있다는 가정하에
  • macOS 라는 가정하에

1. 프로젝트를 진행할 가상환경을 생성한다.

Terminal 열고 아무대서나 아래의 명령어를 실행시키면, miniconda 가 설치된 곳의 env 디렉토리 아래에 만들어지게 된다.
conda create -n myproject python=3.8

  • 잘 만들어졌는지 확인하려면 아래의 명령어 실행에서 생성한 가상환경 이름이 존재하면 된다.
    conda evn list

2. 가상환경 활성화 하기

conda activate myproject
위와 같은 화면이 나오면 성공.

  • 반대로 가상환경을 비활성화 하는 명령어는 아래와 같다.
    conda deactivate

3. Django, CORS Header, mysqlclient 설치

  • 아래의 명령어를 차례대로 실행시키자.
    pip install django
    pip install django-cors-headers
    pip install mysqlclient

4. Home(cd ~) 또는 Desktop 등 실제 프로젝트를 진행할 곳으로 이동하여 아래의 명령어를 실행하면, 실제 프로젝트를 진행할 디렉토리가 생성된다.

django-admin startproject test_project

  • 생성한 프로젝트 디렉토리로 이동하여 tree 를 찍어보면, 아래와 같은 구조의 파일들과 디렉토리가 생성되어있다.

tree 는 builtin 명령어가 아니라서 별도로 설치해줘야 한다.
Homebrew 유저라면 brew install tree 를 실행시켜서 설치해주면 된다.


5. 서버 가동, 테스트

python manage.py runserver

  • 위의 명령어가 실행되게 하려면(manage.py 가 있는 디렉토리에서)
  • 정상적으로 서버가 가동되면 위와 같은 메세지가 출력된다.
  • 로컬 IP 는 편하게 즐겨찾기 해두자.
  • localhost 로 들어가보면 정상적으로 아래와 같은 화면이 나온다.

6. 서버를 잠시 멈추고 .gitignore, my_settings.py 를 만든다.

  • touch .gitignore

  • touch my_settings.py

    .gitignore
    github 에 프로젝트를 업로드 할 때, 무시하고 싶은 특정 파일 혹은 특정 확장자를 가진 파일을 설정하는 곳이다. 주로 외부로 노출되면 안되는 중요한 파일들을 설정한다.

  • .gitignore 파일의 내용을 편하게 만들어주는 사이트
    https://www.toptal.com/developers/gitignore

  • pycharm 을 사용할 것이기 때문에 추가 해줌.
  • 만들어 둔 .gitignore 파일에 생성된 내용을 붙여준다.
  • my_settings.py*.csv(필수아님) 를 추가해준다.

7. my_settings.py 설정

  • 이 파일에는 데이터베이스 연결을 위한 정보가 들어간다.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
        }
    }
}
SECRET = {
         'secret': ''
}
  • NAME 은 mysql 에 로그인해서 생성한 database 의 이름이다. 미리 만들어두자.
  • mysql -u root -p
  • create database mydb
  • secret 에 들어가는 값은 아래에서 다룬다.

중간 점검

  • 위의 과정에서 문제가 없었다면 아래의 명령어를 이용해서 현재 프로젝트의 구조와, 설치된 패키지를 확인해보자.
    tree
    pip freeze

8. corsheaders 설정

  • 이 단계에서는 직접 파일을 건드려야 하는데, 아직 vim 조작에 익숙치 않아 일단 파이참으로 빠르게 설정하였다.

  • setting.py 를 건드려야 하는데, test_project 안에 또 다른 하위 test_project 디렉토리가 있을 것이다. 상위 test_project 는 추후에 다른 이름으로 바꿔도 된다.
    (파이참이라면 자동으로 refactor 해줌)


INSTALLD_APPS 수정
corsheaders 추가
admin, auth 주석 처리 혹은 삭제

INSTALLED_APPS = [
		...
		# 'django.contrib.admin',
	    # 'django.contrib.auth',
		'corsheaders'
]

MIDDLEWARE 수정

MIDDLEWARE = [
	...
	        # 'django.middleware.csrf.CsrfViewMiddleware',
   	        #'django.contrib.auth.middleware.AuthenticationMiddleware',
		'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',
	#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가
)

9. settings.py, my_settings.py 수정

from pathlib import Path
import my_settings  # my_settings.py 모듈 import 해준다.
...
...

SECRET_KEY = my_settings.SECRET = ['secret'] # 기존 코드는 주석 혹은 삭제
...

DATABASES = my_settings.DATABASES  # 기존 코드는 주석 혹은 삭제

10. 협업을 위한 requirement.txt 파일 생성하기

뒤에 이어서 프로젝트에 들어온 동료가 동일한 환경을 구성할 수 있도록 정보를 전달하는 파일이다. pip freeze 로 현재 로컬환경에 설치된 파이썬 모듈 정보를 출력하여 > 명령어로 해당 출력 내용을 생성하는 파일명에 바로 저장하게 한다.
pip freeze > requirement.txt


11. Django, MySQL 연결 확인

python manage.py migrate
위의 명령어로 생성한 프로젝트의 Django 와 MySQL 연결을 확인할 수 있는데, 현재 상태론 아래와 같이 에러가 발생한다.

No installed app with label 'admin'

settings.py 의 INSTALLED APP 에서 Django 가 기본적으로 제공하는 admin 앱을 주석처리했었는데, 같은 디레토리 안의 url.py 안에 urlpattern 으로 admin 이 기본적으로 설정이 되어있어서 이와 같은 에러가 발생한다.
settings.py 의 INSTALLED_APP 설정으로 앱을 추가/제거 할 때 항상 url.py 도 같이 신경써줘야 한다.
주석처리하고 다시 실행시켜보면 제대로 실행 되는 것을 확인할 수 있다.

여기까지 하면 초기 설정 완료.


추가적으로 알아야 할 지식 정리

  • python manage.py makemigrations
    models.py 에서 변경한 내용에 대한 마이그레이션을 생성.

  • python manage.py migrate
    프로젝트에서 변경 사항을 데이터베이스에 적용

  • corsheaders 란? *참조1

  • corsheaders 란? *참조2

  • pip 으로 인스톨 되는 모듈이나 페키지는 어디에 설치될까
    python manage.py shell (파이썬 쉘 실행)

import os
import sys
sys.executable
os.path.dirname(sys.executable)

  • bin 디렉토리 안에 사용가능한 명령어 파일들이 존재하는 것을 확인할 수 있다.
  • /Users/vcne/miniconda3/envs/myproject/bin 디렉토리로 이동
    ls -al | grep pip
  • 가상환경의 bin 디렉토리 안에 pip 명령어 파일이 존재하는 것 확인
  • pip 로 설치한 패키지 목록을 확인해보자.
    pip list
  • 아까 설치한 목록들이 보인다. 그럼 아래의 명령어로 pip 로 설치한 패키지의 위치를 알아볼 수 있다.
pip show pakage_name
pip show Django
..

위의 결과로 가상환경에서 pip install 로 설치한 패키지의 위치는
가상환경/myproject/lib/python3.8/site-package 에 설치된 것을 확인할 수 있었다.

profile
개발을 취미로 할 수 있는 그 때 까지

0개의 댓글