Search

Setting

1. 개발환경 기본 설정

가. 개발환경 설정

1) 가상 환경

가상환경 설정 명령
python3 -m venv venv
가상환경 활성화 명령
source venv/bin/activate
가상환경 비활성화 명령
deactivate

2) 장고 설정

가상환경에 장고 설치 명령
pip install django~=3.1.0
가상환경에 새로운 장고앱 세팅 명령
django-admin startproject config .
python manage.py startapp posts
Add Super User
python manage.py createsuperuser
Django 내 새로운 앱 추가 설정
# config/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'posts', # 추가한 부분 ]
Python
복사
DB와 새로 추가한 Django 앱 사이 Sync
python manage.py migrate
IDE에 python3이 인터프리터로 설정이 안되어 있다면 IDE 인터프리터 설정에서 변경 필요

나. 가상환경 설정(Poetry)

1) Poetry 설치

Poetry 설치(Mac 기준)
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
프로젝트 초기설정 및 가상환경 생성
poetry init
패키지 설치(프로젝트 클론 시)
→ .toml 파일 내 패키지 설치
poetry install
장고 프로젝트 설정
poetry run django-admin.py startproject <demoproject> .

2) Poetry 기본 조작 명령

가상환경에 패키지 추가
poetry add django=3.1.13
poetry add django@latest
패키지 삭제
poetry remove pytest
개발환경 패키지 설치
poetry add pytest factory-boy --dev

다. 가상환경 설정(virtualenvwrapper)

1) 파이썬 가상 환경 사용 권장

상이한 버전의 파이썬으로 각각의 장고 어플리케이션을 개발 불가
→ 하나의 로컬 환경에서 파이썬 버전을 하나만 지정할 수 있음

2) 기본 환경 설정

virtualenv --python=파이썬버전 가상환경이름

2-1) 가상 환경 설정

virtualenvwrapper 설치
sudo pip3 install virtualenvwrapper
Shell
복사
shell startup file(~/.bash_profile) 수정
export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 export PROJECT_HOME=$HOME/Devel source /Library/Frameworks/Python.framework/Versions/3.9/bin/virtualenvwrapper.sh
Shell
복사

2-2) M1 가상 환경 설정

virtualenvwrapper 설치
sudo pip3 install virtualenv virtualenvwrapper
Shell
복사
shell startup file(~/.zshrc) 수정
export WORKON_HOME=~/.virtualenvs export VIRTUALENVWRAPPER_PYTHON="$(which python3.9)" source /Library/Frameworks/Python.framework/Versions/3.9/bin/virtualenvwrapper.sh
JavaScript
복사
파일 이름으로 경로 찾기: find / -name virtualenvwrapper.sh
정상 설치 확인
source ~/.zshrc

3) 가상 환경 생성

새로운 가상 환경 생성
→ 명령: mkvirtualenv my_django_environment
→ 결과: 커맨드라인 변경, (my_django_environment) mj@big-smart ~ %

4) 가상 환경 사용

source ~/.zshrc: 가상환경 shell startup script 실행
deactivate: 활성화된 파이썬 가상 환경을 비활성화한다
workon: 사용가능한 가상 환경 목록을 보여준다
workon name_of_environment: 특정 파이썬 가상 환경을 활성화한다
rmvirtualenv name_of_environment: 특정 환경을 제거한다.

라. 가상환경 설정(pipenv)

1) pipenv 설치

pip3 install pipenv
or
brew install pipenv

2) django 설치

pipenv --python 3.9
-> Pipfile 자동생성
pipenv install django-=3.1.0

3) pipenv 작업

Pipfile 덮어쓰기
pipenv install
pipenv run start

라. 장고 설치 및 실행

1) 장고 설치 및 확인

# 장고 설치 pip3 install django # 설치 확인 python3 -m django --version
Shell
복사

2) 장고 실행

# django-admin 도구 활용하여 기본 프로젝트 생성(testsite) django-admin startproject testsite cd testsite # 개발용 웹 서버 실행 python3 manage.py runserver # 특정 설정 정보 기준 웹 서버 실행 python3 manage.py runserver --settings=settings.dev
Shell
복사

마. pip package 관리

1) requirements.txt

package 목록을 requirements.txt 내 정리
pip freeze > requirements.txt
djangorestframework==3.11.2 Django==3.1.13 . . .
Plain Text
복사
requirements.txt 내 모든 package 설치
pip install -r requirements.txt
pip로 설치된 패키지 목록 확인
pip list

2. 어플리케이션 설정

가. 프로젝트 생성

1) 프로젝트 생성 명령

'local library'라는 이름의 프로젝트 생성
→ django-admin 명령에 따라 프로젝트의 구조가 생성됨
django-admin startproject locallibrary cd locallibrary
Shell
복사

나. Application 생성 및 등록

1) Application 생성 명령

'catalog'라는 application 생성
python3 manage.py startapp catalog
Shell
복사

2) Application 등록

프로젝트(locallibrary)의 설정파일(locallibrary/locallibrary/settings.py)에 application(catalog) 등록
→ 설정파일의 INSTALLED_APP의 리스트에 'catalog.apps.CatalogConfig' 값 추가
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'catalog.apps.CatalogConfig', ]
Shell
복사

다. 프로젝트 설정

1) 기본 설정 조작

프로젝트 설정파일(locallibrary/locallibrary/settings.py) 내부에서 여러 설정 작업 가능

2) DB 설정(SQL Lite)

데이터베이스의 경우, settings.py 이하 DATABASES 딕셔너리에서 설정
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Shell
복사

3) DB 설정(MySQL)

mysqlclient 설치(mysqlclient 1.4.0 or later)

라. URL 맵퍼 연결

1) urls.py 조작

path('catalog/', include('catalog.urls'))
→ 'catalog/' 경로의 요청 처리 시, catalog 폴더 이하 urls.py 파일을 참조
path('', RedirectView.as_view(url='/catalog/', permanent=True))
→ 기본 경로(/)에 대한 요청 처리 시, /catalog/ 경로로 리다이렉트
→ view의 함수 중 'RedirectView.as_view' 함수가 리다이렉트 기능
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
→ 개발 중 정적인 파일(CSS, JavaScript 파일)을 제공할 수 있도록 설정

마. 환경설정 테스트

1) 데이터베이스 마이그레이션 실행

마이그레이션(migration): 장고의 모델(객체) 정의에 변경사항이 발생하면 자동으로 해당 변화를 반영하여 DB의 데이터 구조를 수정
→ 장고는 ORM 사용을 위해 장고의 모델(객체)을 DB의 엔티티에 매핑함
→ 장고의 모델에 맞춰 DB의 엔티티를 수정하는 로직(스크립트)는 '/locallibrary/catalog/migrations/'에 생성할 수 있음
makemigrations: 마이그레이션 생성 명령
→ 마이그레이션 생성과 실행 명령을 구분함으로써 마이그레이션 실행 전 점검할 수 있음
migrate: 마이그레이션 실행 명령
python3 manage.py makemigrations python3 manage.py migrate
Python
복사

2) 웹사이트 실행

에러 발생
→ 기본경로 요청(/)에 대해 /catalog로 리다이렉션 처리했지만 /catalog에 대해 맵핑하여 처리할 로직이 없음

Reference

M1 가상환경 설치, https://scv-life.tistory.com/31
파이썬 웹 프로그래밍, 김석훈, 한빛미디어
William S. Vincent, DJANGO for APIs