개발 일기
django? 웹서버 프로젝트 시작하기 본문
이번에 django 프로젝트를 진행하게 되었는데 django를 처음 사용하기 시작 했을때부터 공부했던 명령어나 개념들을 블로그에 정리해보려고 마음을 먹었다.
docs.djangoproject.com/ko/3.1/intro/tutorial01/
위 사이트가 공식 django 문서를 한국어로 번역한 사이트이다. 위 튜토리얼만 따라하면 누구나 쉽게 자신만의 사이트를 런칭할 수 있다.
시작하기
위 사진처럼 자신이 프로젝트를 실행하고자 하는 위치에 디렉토리를 생성 한 후 해당 디렉토리로 이동한다.
mkdir ~/원하는위치/원하는 폴더명
ex $ mkdir ~/Desktop/coding/final_commento
cd ~/Desktop/coding/final_commento
이제 장고 앱을 만들어 보자.(장고가 설치되어 있지 않다면 장고를 먼저 설치해주어야 한다.)
django-admin startproject mysite
위 명령어는 mysite라는 이름의 장고 프로젝트를 만드는 명령어이다.
final_commento
|
|____mysite
|______mysite
|______manage.py
장고 프로젝트를 생성했다면 위와 같은 디렉토리 구조가 생성됬을 것이다.
mysite를 들어가보면 여러 파일이 위치해 있을 텐데 공식 문서에 의하면
이 파일들은,
- The outer mysite/ root directory is a container for your project. Its name doesn’t matter to Django; you can rename it to anything you like.
- manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티 입니다. manage.py 에 대한 자세한 정보는 django-admin and manage.py 에서 확인할 수 있습니다.
- mysite/ 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 이 디렉토리 내의 이름을 이용하여, (mysite.urls 와 같은 식으로) 프로젝트의 어디서나 Python 패키지들을 임포트할 수 있습니다.
- mysite/__init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다. Python 초심자라면, Python 공식 홈페이지의 패키지를 읽어보세요.
- mysite/settings.py: 현재 Django 프로젝트의 환경 및 구성을 저장합니다. Django settings에서 환경 설정이 어떻게 동작하는지 확인할 수 있습니다.
- mysite/urls.py: 현재 Django project 의 URL 선언을 저장합니다. Django 로 작성된 사이트의 《목차》 라고 할 수 있습니다. URL dispatcher 에서 URL 에 대한 자세한 내용을 읽어보세요.
- mysite/asgi.py: An entry-point for ASGI-compatible web servers to serve your project. See ASGI를 사용하여 배포하는 방법 for more details.
- mysite/wsgi.py: 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점입니다. WSGI를 사용하여 배포하는 방법를 읽어보세요.
위와 같은 역할들을 한다고 한다.
이 중에서 우리가 자주 사용하는 파일은 settings.py와 urls.py, manage.py이니 잘 기억해두자.
프로젝트를 생성했으면 앱을 만들어주어야 한다. 프로젝트는 말 그대로 django의 프로젝트를 하나 생성한 것이고, 인스타그램을 예시로 들어보면 프로젝트 인스타그램 안에 로그인 화면, 게시판, 댓글 목록 등등 필요한 앱들의 종류가 있는 것 처럼 우리도 하나의 프로젝트의 안에 여러가지 앱을 만들어 줄 수 있다.
python manage.py startapp apis
나는 api어플을 만들어보려고 하기 때문에 apis라는 이름의 앱을 생성해 주었다.
어플을 생성했으면 final_commento/mysite/mysite/settings.py에 몇가지 설정을 변경해주어야 한다.
ALLOWED_HOSTS = ['*']
ALLOWED_HOSTS = [] 부분은 외부에서 접속할 사이트의 주소를 나타낸다. 위 * 자리에 자신이 서비스할 주소를 적으면 된다. 위처럼 *로 나타낼 경우 모든 접근은 허용해준다는 의미이다. 반드시 *이 아니라 서비스할 주소로 바꾸어 주자.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'apis', # 추가한 코드
]
이제 INSTALLED_APPS에 apis라는 앱을 추가해 준다.
LANGUAGE_CODE = 'ko-kr'
TIME_ZONE = 'Asia/Seoul'
settings.py의 맨 아래로 내리면 LANGUAGE_CODE, TIME_ZONE 이라는 설정이 보이는데 이 부분을 위와 같이 수정해주면 1차로 django를 실행할 준비가 끝났다.
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
위 3가지 명령을 실행시켜주면 runserver가 실행되며 django가 서비스 되기 시작하며 http://localhost:8000/으로 접속하면 장고 페이지를 볼 수 있다.
# 마이그레이션 파일 생성
python manage.py makemigrations <app-name>
# 마이그레이션 적용
python manage.py migrate <app-name>
# 마이그레이션 적용 현황
python manage.py showmigrations <app-name>
# 지정 마이그레이션의 SQL 내역
python manage.py sqlmigrate <app-name> <migrations-name>
# makemigrations를 실행시 모델을 변경시킨 사실과 새로운 모델과 같은 변경사항들을 Django에게 알려준다.
# migrations은 Django가 모델의 변경사항을 저장하는 방법이다.