Terminal 열고 아무대서나 아래의 명령어를 실행시키면, miniconda 가 설치된 곳의 env 디렉토리 아래에 만들어지게 된다.
conda create -n myproject python=3.8
conda evn list
conda activate myproject
위와 같은 화면이 나오면 성공.
conda deactivate
pip install django
pip install django-cors-headers
pip install mysqlclient
django-admin startproject test_project
tree 는 builtin 명령어가 아니라서 별도로 설치해줘야 한다.
Homebrew 유저라면brew install tree
를 실행시켜서 설치해주면 된다.
python manage.py runserver
.gitignore
, my_settings.py
를 만든다.touch .gitignore
touch my_settings.py
.gitignore
github 에 프로젝트를 업로드 할 때, 무시하고 싶은 특정 파일 혹은 특정 확장자를 가진 파일을 설정하는 곳이다. 주로 외부로 노출되면 안되는 중요한 파일들을 설정한다.
.gitignore 파일의 내용을 편하게 만들어주는 사이트
https://www.toptal.com/developers/gitignore
my_settings.py
와 *.csv(필수아님)
를 추가해준다.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': ''
}
mysql -u root -p
create database mydb
tree
pip freeze
이 단계에서는 직접 파일을 건드려야 하는데, 아직 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',
#만약 허용해야할 추가적인 헤더키가 있다면?(사용자정의 키) 여기에 추가
)
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 # 기존 코드는 주석 혹은 삭제
뒤에 이어서 프로젝트에 들어온 동료가 동일한 환경을 구성할 수 있도록 정보를 전달하는 파일이다. pip freeze 로 현재 로컬환경에 설치된 파이썬 모듈 정보를 출력하여 > 명령어로 해당 출력 내용을 생성하는 파일명에 바로 저장하게 한다.
pip freeze > requirement.txt
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
프로젝트에서 변경 사항을 데이터베이스에 적용
pip 으로 인스톨 되는 모듈이나 페키지는 어디에 설치될까
python manage.py shell
(파이썬 쉘 실행)
import os
import sys
sys.executable
os.path.dirname(sys.executable)
/Users/vcne/miniconda3/envs/myproject/bin
디렉토리로 이동ls -al | grep pip
pip list
pip show pakage_name
pip show Django
..
위의 결과로 가상환경에서 pip install 로 설치한 패키지의 위치는
가상환경/myproject/lib/python3.8/site-package 에 설치된 것을 확인할 수 있었다.