django가 무엇인가?
장고는 파이썬에서 웹사이트를 만들 수 있도록 도와주는 도구입니다. 이런 도구를 프레임워크라고 부르기도 합니다. 그래서 장고를 파이썬의 웹 프레임워크라고 합니다. 장고로 웹사이트를 구현하면 가져다 쓸 수 있는 패키지가 많아서 편리합니다. 패키지가 많다는 건 많은 기능들을 내가 직접 구현할 필요 없이 가져다가 쓰기만 하면 됩니다. 예를 들어 내가 만든 웹페이지의 내용을 pdf로 다운로드하게 해주고 싶으면 웹페이지를 pdf로 전환하는 기능을 직접 만들 필요 없이 패키지를 가져다 쓰기만 하면 됩니다.
장고 자체도 파이썬의 패키지입니다. 파이썬에서 패키지는 pip라는 걸 통해서 관리합니다. 파이썬 최신 버전이라면 pip를 사용할 수 있을 겁니다. pip 명령을 입력하여 아래와 같이 나온다면 잘 설치되어있는 겁니다.
pip에서 새로운 패키지를 설치하고 싶으면 pip install 명령어를 이용하면 됩니다. 장고를 설치하고 싶으면 pip install django를 입력하여 설치할 수 있습니다. 장고의 스펠링이 d로 시작한다는 걸 유의해주세요. 아래와 같이 명령어를 실행했다면 장고가 설치되었을 겁니다.
이제 장고 프로젝트를 만들어 보겠습니다.
프로젝트를 만들 때는 django-admin이라는 명령어를 사용합니다. 프로젝트를 만들기 전에 프로젝트를 만들 폴더로 이동해주세요. 저는/ home/hyun/python 폴더에 프로젝트를 만들어보겠습니다.
django-admin startproject mysite를 입력하여 mysite라는 장고 프로젝트를 만드는 명령어입니다.
실행후 폴더안을 살펴보면 mysite 폴더가 생긴것을 확인할 수 있고 mysite안을 보면 manage.py와 mysite라는 폴더가 생긴것을 확인할 수 있습니다. 프로젝트도 만들어졌으니 안을 들여다보기전에 서버를 실행해보겠습니다.
manage.py가 들어있는 폴더로 들어와 python manage.py runserver 로 서버를 실행할 수 있습니다.
(저는 python3.6 버전으로 진행하여 python3.6 manage.py runserver 로 서버를 실행했습니다)
서버를 실행하면 밑에서 2번째 줄에 Starting development server at 'http://127.0.0.1:8000/' 이란 문구를 볼 수 있습니다. 이제 웹 브라우저 주소창에 127.0.0.1:8000을 입력하면 장고서버가 잘 실행되는지 확인할 수 있습니다.
127.0.0.1은 특별한 IP로 자기 컴퓨터를 가리킵니다. 그래서 127.0.0.1:8000을 localhost:8000으로 바꿔도 똑같이 실행됩니다. 서버를 중단시키고 싶다면 Terminal창에서 Ctrl+C를 눌러주면 됩니다.
지금까지는 mysite라는 프로젝트를 만들어봤습니다. 이제 장고에서 앱을 만들고 Hello World가 출력되도록 해보겠습니다. 장고 프로젝트는 앱이라는 것들로 구성됩니다. 앱은 웹사이트를 기능별로 분리해놓은 단위라고 생각하면 됩니다. 예를 들어 웹사이트에 게시판 과 투표 기능이 있다면 그 사이트는 게시판 앱과 투표 앱으로 구성할 수 있습니다. 하나의 사이트는 여러개의 앱으로 구성할 수 있습니다. 그럼 첫번째 앱을 만들어 보겠습니다.
python manage.py startapp elections는 elections라는 앱을 만들라는 명령어 입니다.
( python3.6 manage.py startapp elections )
실행하면 elections라는 폴더가 만들어진걸 볼 수 있습니다. 프로젝트와 같은 이름의 폴더는 프로젝트의 기본적인 설정을 담고있다고 생각하세요. 방금 만든 elections 폴더로 이동해 views.py을 열어 Hello World를 출력하는 코드를 작성해보겠습니다.
elections/views.py
1
2
3
4
5
6
|
from django.shortcuts import render
# Create your views here.
def index(request):
return HttpResponse("Hello world")
|
페이지 요청에 대해서 Hello world라고 HttpResponse를 날려주는 코드입니다. 이 코드가 실행되도록 만들려면 어떤 url을 통해서 index함수가 실행되는지 지정해줘야 합니다. 이 부분은 2단계로 나눠집니다.
elections App 안에 views 파일이 있고 그 안에 index가 있으니까 우선 사이트에 접속했을 때 elections App이 실행되는 조건을 지정해줘야 합니다. 그리고 elections App이 실행되면 어느 경우에 index함수가 실행되는지를 지정해줘야 합니다. 우선 elections App이 실행되는 조건을 지정해보도록 하겠습니다. 먼저 mysite/urls.py 를 열어줍니다.
urls.py안에 urlpatterns는 서버로 요청이 들어오면 누가 어떻게 처리할지 담당자를 지정하는 역할을 합니다.
앞 부분이 주소, 뒷 부분이 접속했을 때 누가 처리할 것인지를 의미합니다. 그런데 urlpatterns에 admin이 정의되어 있는데요. 서버를 실행하고 loalhost:8000/admin을 입력해보면 장고 어드민이 실행되는걸 볼 수 있습니다.
그럼 localhost:8000 접속을 했을 때 elections App이 실행되게 하려면 어떻게 해야할까요? 먼저 mysite/urls.py를 열어 elections.urls로 연결하라는 코드를 만들어줍니다.
mysite/urls.py
1
2
3
4
5
6
7
|
from django.contrib import admin
from django.conf.urls import url, include
urlpatterns = [
path('', include('elections.urls')),
path('admin/', admin.site.urls),
]
|
127.0.0.1:8000으로 접속하면 elections.urls에서 처리하라는 코드인데요. include는 앱에 대해서 접속을 처리해줄 때 반드시 적어줘야하는 부분입니다. 여기까지하면 elections라는 앱이 어떤 경우에 실행되는지까지 정의한겁니다. 원하는건 elections/views.py 안에 index함수가 실행되는겁니다. 이제 index함수가 실행되도록하기위해 elections폴더안에 urls.py 파일을 만들어 주도록합니다.
elections/urls.py
1
2
3
4
5
6
7
8
9
10
|
# .은 현재폴더란 의미고 여기서 views라는 모듈을 갖고오라는 의미
from . import views
urlpatterns = [
# ''는 빈경로라는 의미, localhost:8000 뒤에 아무것도 안붙은 경우에 views.index가 실행되도록 만들라는 의미
path('', views.index),
]
|
이제 서버를 실행시키고 접속하면 HelloWorld가 출력되는걸 볼 수 있습니다.
References
장고를 활용한 웹사이트 만들기 | 프로그래머스
이 강의는 최신 버전의 장고를 활용하고 있지 않아, 최근 사용되는 장고와 차이가 있습니다. 장고를 배우고 싶으신 분은 다른 튜토리얼 사이트를 이용하시길 추천합니다.
programmers.co.kr