관리 메뉴

개발 일기

django? 웹서버 프로젝트 시작하기 본문

backend/django

django? 웹서버 프로젝트 시작하기

jonghyuck.hong

이번에 django 프로젝트를 진행하게 되었는데 django를 처음 사용하기 시작 했을때부터 공부했던 명령어나 개념들을 블로그에 정리해보려고 마음을 먹었다. 

docs.djangoproject.com/ko/3.1/intro/tutorial01/

 

첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

위 사이트가 공식 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가 모델의 변경사항을 저장하는 방법이다.

Comments