개요
파이썬(python)의 장고(django)로 서버사이드를 개발해보려고 합니다. 이 블로그 포스트에서는 장고(django) 명령어를 통해 장고(django) 프로젝트를 설치하고 시작하는 방법에 대해서 알아봅니다.
이 블로그는 시리즈로 작성되어 있으며, 아래에 링크를 통해 시리즈의 다른 글을 확인할 수 있습니다.
- 장고(django) 설치하기
- 장고(django) 프로젝트 시작하기
- 장고(django) 모델(models) 사용해보기
- 장고(django)의 관리자 페이지
- 장고(django)의 라우팅(Routing)
- 장고(django)의 ORM
- 장고(django)의 뷰(View)
- 장고(django)의 폼(Form)
- 장고(django) 프로젝트를 헤로쿠(heroku)에 업로드하기
또한 이 블로그 시리즈에서 다룬 소스는 github에 공개되어 있습니다. 아래에 링크를 통해 확인 가능합니다.
장고(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/'
...
마지막으로, 프로젝트를 실서버에 배포할 경우, 아래와 같이 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)
}
}
...
위에 내용에서 NAME
과 PASSWORD
는 환경에 맞게 수정하시기 바랍니다. 아래에 명령어로 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
파일을 갱신합니다.
# cd django_excercise
pip freeze > requirements.txt
Database가 잘 연동되었지 확인하기 위해 장고(django)가 기본으로 제공하는 관리화면에 필요한 기본 테이블을 아래에 명령어를 통해 생성해 봅니다.
python manage.py migrate
장고(django)와 mysql 연동을 잘 수행했다면 아래와 같은 화면을 볼 수 있습니다.
database 툴을 이용하여 확인하면 아래와 같이 성공적으로 테이블이 생성된 것을 확인할 수 있습니다.
테스트
지금까지 장고(django)에 설정에 대해서 알아보았습니다. 이제 아래에 명령어를 통해 장고(django)에서 지원하는 테스트 웹서버를 기동하여 우리가 만든 프로젝트가 잘 실행되는지 확인합니다.
python manage.py runserver
# http://127.0.0.1:8000/
장고(django) 설치와 설정을 무사히 진행하였다면 아래와 같이 장고(django)에서 지원하는 기본 화면을 확인할 수 있습니다.
완료
이것으로 장고(django)의 명령어를 통해 프로젝트를 생성하고 시작하는 방법에 대해서 알아보았습니다. 간단하게 프로젝트 폴더 구조 설명과 설정에 대해서도 알아보았습니다. 또한 앞으로 사용할 mysql과의 연동과 로컬에서 테스트하기 위해 장고(django)에서 기본적으로 제공하는 웹 서버를 사용하여 프로젝트를 실행해 보았습니다.
이제 개발할 준비가 완료되었습니다. 장고(django)를 통해 개발을 시작해 봅시다!
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.