django_개발환경

전호종·2021년 1월 28일
1

django

목록 보기
1/4

전역환경 vs 가상환경

PC(전역 환경) 에 장고와 필요한 라이브러리를 설치하는 것은
건물의 냉방, 난방을 중앙에서 통제하는 꼴이다.
건물에 있는 사람들의 불만은 쏟아져 나올 것이고 모두를 만족시킬 수 없을 것이다.
가장 좋은 방법은 건물 내부에 있는 공간마다 개별적으로 통제할 수 있도록 하는 것이다.

개발은 프로젝트 단위로 이루어진다.
장고 2.x 버젼을 사용해 개발한 프로젝트 A 와
장고 3.x 버젼을 사용해 개발한 프로젝트 B 가 있다고 가정해보자.

전역환경에는 단 하나의 장고환경만 설치할 수 있다.
따라서 전역환경에 장고를 설치해 중앙통제하는 것이 아닌
프로젝트마다 가상의 독립적인 장고환경을 제공해 개별통제할 수 있도록 해야한다!

경험있는 파이썬/장고 개발자들은 일반적으로 독립적인 파이썬 환경에서 파이썬 앱들을 실행한다. 이것은 여러 다른 장고 환경이 하나의 컴퓨터에서 작동 가능하게 한다. 장고 개발팀에서도 당신이 파이썬 가상 환경을 사용하는 것을 추천한다.

가상환경 설정

# 가상환경 라이브러리 설치
$ pip install virtualenv

# 프로젝트를 시작할 디렉토리를 생성하고 해당 디렉토리로 이동
$ mkdir django_project_01 && cd django_project_01

# 가상환경 설치 및 생성된 가상환경 디렉토리 확인
$ virtualenv venv(가상환경 이름)

# 가상환경 실행 (activate 파일에 적힌 스크립트를 실행한다) 및 프롬프트 (venv) 확인
$ source venv/bin/activate

# 가상환경에서 장고설치
$ pip install django

PyCharm 활용

파이썬 전용 에디터 PyCharm 은 프로젝트 생성과 동시에 가상환경을 제공하기 때문에 보다 편하게 가상환경을 사용할 수 있다.

프로젝트 생성

# 현재 디렉토리에서 장고 프로젝트 생성
# 전반적인 프로젝트를 관리하기 때문에 config
$ django-admin startproject config . (. 은 현재 디렉토리에서 생성) 

생성된 디렉토리 및 파일
    django_project_01/    # 프로젝트 이름(개발에 영향x)
    manage.py         	  # 장고를 실행하기 위한 스크립트 파일
    config/               # 생성된 프로젝트 폴더 (프로젝트 전반적인 설정관련)
    	__init__.py       # 디렉토리를 파이썬 패키지로 인식하는 파일
        settings.py       # 전반적인 설정 관련 파일 
        urls.py           # url을 처리하는 파일
        wsgi.py           # 웹서버와 통신 설정 파일
        asgi.py 		

장고 개발용 서버 실행

# 장고에서는 개발용으로 runserver를 제공한다.
# manage.py 스크립트로 장고 개발용 테스트서버 실행 및 확인 
$ python manage.py runserver

# 장고에서 기본적으로 등록된 어플리케이션의 모델들이 생성되어 있으나 
# 데이터베이스에 연동되지 않았음을 경고하는 문구
You have 18 unapplied migration(s). Your project may not work properly 
until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

# http://127.0.0.1:8000/ 주소로 서버가 실행되고 있음을 확인
February 04, 2021 - 15:40:24
Django version 3.1.6, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

# 경고문구에 있는 명령어를 실행하면 경고 문구가 사라진다.
$ python manage.py migrate

데이터 베이스

# 장고는 SQLite, MySQL, PostgreSQL, Oracle 지원 
# 기본설정은 SQLite, 작은 프로젝트에 SQLite 사용
# django-PostgreSQL 조합을 가장 많이 사용

# migrate 명령어를 사용하면 디렉토리에 db.sqlite3 생성된다.
# 데이터베이스에 생성된 테이블을 확인하기 위해서 sqlite3 설치 및 확인 
$ sudo apt install sqlite3
$ sqlite3 db.sqlite3
$ .tables

시간대 설정

# vi config/settings.py

# 기준 시간대를 설정해야 데이터를 저장하고 수정할 때 적절한 시간을 기록할 수 있다.
TIME_ZONE = 'Asia/Seoul'

어플리케이션 생성

장고 프로젝트의 기능은 어플리케이션 단위로 구현하며 구성되어 있다.
ex) 사용자 계정을 관리하는 기능을 담당할 account 앱 생성

$ python manage.py startapp account

생성된 디렉토리 및 파일
   account/               
    	migrations		# migrations 파일을 저장하는 디렉토리        
        __init__.py		
        admin.py		# 해당 어플리케이션의 데이터를 관리자 페이지로 관리하는 파일 
        apps.py			
        models.py 		# model을 생성해 데이터베이스와 데이터를 주고 받을 수 있게 하는 파일
        test.py			
        views.py  		# 요청된 url에 해당하는 작업의 로직을 처리하는 파일 
       	urls.py(생성)		# url파일은 처음에 없지만 생성해 url 관리 및 맵핑

어플리케이션 등록

# vi config/settings.py

# 장고에 기본적으로 등록된 어플리케이션
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

# 어플리케이션을 등록해야 장고에서 인식하고 데이터베이스와 연동가능
# 생성한 어플리케이션 등록
INSTALLED_APPS += [
    'account',
]

0개의 댓글