장고(django) 프로젝트 시작하기

2019-05-23

장고(django)의 명령어를 통해 장고(django) 프로젝트를 생성하고 시작해 봅시다. 또한 설정, DB(mysql) 연동을 통해 실제로 장고(django)로 프로젝트를 개발할 수 있는 상태를 만들어 봅시다.

개요

파이썬(python)의 장고(django)로 서버사이드를 개발해보려고 합니다. 이 블로그 포스트에서는 장고(django) 명령어를 통해 장고(django) 프로젝트를 설치하고 시작하는 방법에 대해서 알아봅니다.

장고(django)의 설치에 대해서 이전 블로그를 확인해 주세요.

장고(django) 프로젝트

아래에 명령어로 파이썬(python)의 가상 환경(Virtual Environment)를 실행하고 장고(django)가 잘 설치되어있는지 확인합니다.

source venv/bin/activate
django-admin --version
# 2.2

파이썬(python)의 가상 환경(Virtual Environmet) 설정이나 장고(django) 설치에 대한 내용은 이전 블로그를 참고해 주세요.

아래에 명령어로 장고(django) 프로젝트를 생성합니다.

django-admin startproject django_exercise

기본 폴더 구조

장고(django) 명령어로 프로젝트를 생성하면 아래와 같이 폴더가 생성되는 것을 확인할 수 있습니다.

|-- django_exercise
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   |-- wsgi.py
|-- manage.py

각 파일은 아래와 같은 기능을 합니다.

  • django_exercise/settings.py: 전반적인 설정을 가지고 있는 파일
  • django_exercise/urls.py: 프로젝트의 url을 관리하는 파일
  • django_exercise/wsgi.py: 웹서버(apache, nginx등)과 연동하기 위한 파일
  • manage.py: 프로젝트를 관리. 예를 들어, DB의 migration 생성 및 실행, 로컬에서 다른 설치없이 웹 서버를 기동 등

설정

설정 파일인 django_exercise/settings.py을 열고 아래와 같이 타임존을 설정합니다.

...
TIME_ZONE = 'Asia/Seoul'
...
USE_TZ = False
...

위에서 설정한 USE_TZ 옵션은 True인 경우, templates와 forms에서만 위에서 설정한 타임존을 따르게 됩니다. False인 경우, models에서도 타임존을 따르게 되므로 모든 곳에서 동일한 타임존을 따르게 됩니다.

또한 static 파일을 다루기 위해 아래와 같이 STATIC_ROOT를 추가합니다.

...
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
...

마지막으로, 프로젝트를 실서버에 배포할 경우, 아래와 같이 DEBUG 설정을 False로 변경한 후 배포하시기 바랍니다.

...
DEBUG = False
...

DB 설정

여기에서는 장고(django)와 mysql을 연동하는 방법에 대해서 소개합니다. 맥(Mac)에 mysql을 설치하는 방법에 대해서는 아래에 링크를 통해 확인하시기 바랍니다.

장고(djanog)의 설정 파일인 django_exercise/settings.py를 열고 아래와 같이 수정합니다.

...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '...',  # DB name
        'USER': 'root',  # DB account
        'PASSWORD': '...',  # DB account's password
        'HOST': '127.0.0.1',  # DB address(IP)
        'PORT': '3306',  # DB port(normally 3306)
    }
}
...

위에 내용에서 NAMEPASSWORD는 환경에 맞게 수정하시기 바랍니다. 아래에 명령어로 mysql과 연동하기 위해 필요한 모듈인 mysqlclient를 설치합니다.

pip install mysqlclient

만약 설치중에 아래와 같은 에러 메세지가 나오면,

...
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1
...

아래에 명령어를 사용하여 mysqlclient를 설치하시기 바랍니다.

LDFLAGS=-L/usr/local/opt/openssl/lib pip install mysqlclient

모듈 설치가 완료되었다면 다른 환경에서도 사용할 수 있도록 아래에 명령어로 requirements.txt 파일을 갱신합니다.

pip freeze > requirements.txt

Database가 잘 연동되었지 확인하기 위해 장고(django)가 기본으로 제공하는 관리화면에 필요한 기본 테이블을 아래에 명령어를 통해 생성해 봅니다.

python manage.py migrate

장고(django)와 mysql 연동을 잘 수행했다면 아래와 같은 화면을 볼 수 있습니다.

장고(django)와 mysql 연동 및 migration 실행

database 툴을 이용하여 확인하면 아래와 같이 성공적으로 테이블이 생성된 것을 확인할 수 있습니다.

database툴을 사용하여 장고(django)와 mysql 연동 및 migration 실행 확인

테스트

지금까지 장고(django)에 설정에 대해서 알아보았습니다. 이제 아래에 명령어를 통해 장고(django)에서 지원하는 테스트 웹서버를 기동하여 우리가 만든 프로젝트가 잘 실행되는지 확인합니다.

python manage.py runserver
# http://127.0.0.1:8000/

장고(django) 설치와 설정을 무사히 진행하였다면 아래와 같이 장고(django)에서 지원하는 기본 화면을 확인할 수 있습니다.

장고(django) 설치 및 설정을 통한 프로젝트 시작

완료

이것으로 장고(django)의 명령어를 통해 프로젝트를 생성하고 시작하는 방법에 대해서 알아보았습니다. 간단하게 프로젝트 폴더 구조 설명과 설정에 대해서도 알아보았습니다. 또한 앞으로 사용할 mysql과의 연동과 로컬에서 테스트하기 위해 장고(django)에서 기본적으로 제공하는 웹 서버를 사용하여 프로젝트를 실행해 보았습니다.

이제 개발할 준비가 완료되었습니다. 장고(django)를 통해 개발을 시작해 봅시다!

Buy me a coffeeBuy me a coffee
Posts